
宏
fqbqrr
这个作者很懒,什么都没留下…
展开
-
最简单的编译时字符串字面量转成字符序列
参考地址在此 元<符...C>构 字面{}; 元<型名 T,整...N> 常式 推导(动)准备呀(T,序列<N...>){ 中 字面<T::取()[N]...>(); } 元<型名 T>常式 推导(动)准备(T t){ 型名 造序<型长(T::取())-1>::型 p; 中 准备呀(t,p); } #define 编串(s)\ (准备([]{\ 构 H{静 常式 推导(动)取(){中原创 2020-06-02 10:57:18 · 347 阅读 · 0 评论 -
c++宏元编程.太吓人.太重了.
#include <boost/preprocessor/seq/for_each_i.hpp> #define PROPERTY_LIST (HP)(MP)(STR) #define CASE_MACRO(r, data, i, elem) \ case i: DoSomething(Player.elem); \ break; switch (property) { BOOST_PP_SEQ_FOR_EACH_I(CASE_MACRO,_, PROPERTY_LIST)原创 2020-11-08 15:28:58 · 670 阅读 · 0 评论 -
宏元编程精髓.
#define 构假(S) \ 元<型名 T>构 S:假型{}; #define 构真(S,A) \ 元<>构 S<A>:真型{}; //S为环境,i为索引,A为赋值. 构假(整极浮); 宏每一(构真,整极浮,整,极,浮); 谁说没用.宏元编程.大有可为. 参考地址 重点在这里,宏的调试:这是核心的核心: #define 宏串(s) _宏串(s) #define _宏串(s) 打印(#s); 通过这个,你才能找到问题根源.再加上上一篇秘诀,可恨的微原创 2020-11-11 14:34:45 · 357 阅读 · 0 评论 -
深刻领悟微软宏微软
#define B_FUCK_MSVC(args) implementation of B #define B(...) EXPAND(B_FUCK_MSVC(__VA_ARGS__)) //其中EXPAND的定义如下 #define EXPAND(...) __VA_ARGS__ 上面是核心.一定要深刻理解. 参考在这里原创 2020-11-11 14:44:17 · 416 阅读 · 0 评论 -
学习宏编程
参考地址 C/C++宏编程的艺术 用括号对封装参数叫元组,展开时移除. #define 宏删括(T) 宏删括_ T #define 宏删括_(...) __VA_ARGS__ 用宏函数来代替特殊符号,这是懒求值(即尽量先展开再求值). #define 宏逗() , #define 宏左括() ( #define 宏右括() ) #define 宏空的() 先展开,再求值: #define 宏连(A,B) 宏连_(A,B) #define 宏连_(A,B) A##B 不然,要出问题.自增/自减逻辑运算,原创 2020-11-11 21:41:48 · 1214 阅读 · 0 评论