首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-08 
C语言命名规则的问题inti2d_##fname(conststname*a,unsignedchar**out)这个i2d_##fname是什么意思,C语言命

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

热点排行