define的高级用法 看不懂
求救define的高级用法 看不懂#define GAINFO(M,LEN)\{\memset(buff,0,sizeof(buff))\wchar_t* tbuffu (
求救define的高级用法 看不懂
#define GAINFO(M,LEN)\
{\
memset(buff,0,sizeof(buff));\
wchar_t* tbuffu = (wchar_t*)buffu;
.......
}
//调用
GAINFO(GName,30)
[解决办法]define的东西是编译的时候直接被替换成定义的内容,不是调用。
对于 #define GAINFO(M,LEN) 这个例子,编译完后
GAINFO(GName,30) 被替换成
{ \
memset(buff,0,sizeof(buff)); \
wchar_t* tbuffu = (wchar_t*)buffu;
.......
}
大括号中的所有M被替换为GName,LEN被替换成30
里边的
[解决办法]没加\编译不过的
[解决办法]直接展开,有什么高级的地儿?
[解决办法]源代码里面的文本替换 没什么的
[解决办法]就是一个带参宏,直接看起来也不需要什么展开规则的,就是直接展开,代码替换就是了
[解决办法]inline差不多的
[解决办法]这和inline差不多一个东西
不过inline修饰的话 最终由编译器控制是否inline,这个的话.....
[解决办法]没加\的话,后面的和#define没啥关系
[解决办法]直接展开读就是了...这玩意儿挺好懂的。
[解决办法]展开替换而已,谈不上高级吧。
这种做法虽然看起来很神秘,但建议不要这样做,用 inline函数更好。代码易读性是相当重要的。
如果想以“速度”不作借口,那建议用_asm
总之,别这么做
[解决办法]这种用法有什么高级 ,你就按原文替换就行。
[解决办法]起到连接的作用,不加‘\’的话只是替换那一行,加上的话就整体替换。看下《C与指针》这些都是最基本的宏用法。
[解决办法]行尾的\是续行符。
因为#define语句以换行结束,所以为避免宏定义内换行提前结束,在每行的尾部加\
[解决办法]Effective C++里说最好用inline替代define