C语言命名规则的问题
int i2d_##fname(const stname *a, unsigned char **out)
这个i2d_##fname是什么意思,C语言命名中好象不允许有#
[解决办法]
## 是粘贴符 例如:
#define _T(x) L ## x 就是把L粘贴到x上,_T就是通过粘贴L使得char*变成wchar
[解决办法]
顶
又长见识了
[解决办法]
在#define _T(x) L ## x中
‘##’表示把L跟后面宏参数连接在一起
例如: _T( "what ") = L "what "
展开后就是:L“what”了
[解决办法]
转:
## 叫做指令粘贴符,它的英文术语叫做token-pasting operator,主要在宏定义中使用。使用例子如下:
#define paster( n ) printf( "token " #n " = %d ", token##n )
int token9 = 9;
用如下方式调用宏,
paster( 9 ); //输出: taken9 = 9
上面的宏此时等价于
printf( "token " "9 " " = %d ", token9 );
结果就是:
printf( "token9 = %d ", token9 );
#include <stdio.h>
#define paster( n ) printf( "token " #n " = %d\n ", token##n )
int main()
{
int token9=10;
paster(9);
return 0;
}