今天在看公司原来程序的时候发现有一些宏变量使用了#跟##,专门查了一下它们的用法。
下面的从网上找到的
1、#.参数名以#作为前缀则结果将被扩展为由实际参数的带引号的字符串。
例如:
#if 0
#include <stdio.h>
#define dprint(expr) printf(#expr "= %d\n",expr);
int main()
{
int a=20,b=10;
dprint(a/b);
return 0;
}
#endif
最后程序将输出a/b=2.
2、##将会进行字符串的连接。
例如:
#if 1
#include <stdio.h>
#define createfun(name1,name2) \
void name1 ## name2 () \
{ \
printf("%s called\n",__FUNCTION__); \
}
createfun(the,function)
int main()
{
thefunction();
return 0;
}
#endif
最后程序将会输出:thefunction called.
下阶段我会写一些自己的#跟##,来加强训练。