读书人

C语言命名规则的有关问题

发布时间: 2012-02-08 19:52:21 作者: rapoo

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;
}

读书人网 >C语言

热点推荐