在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。
例子:
#include <stdio.h>
#define paster(n) printf("token"#n"=%d\n",token##n)
int main()
{
int token9=10;
paster(9);
getchar();
return 0;
}
输出:
token9=10
再举一例:
__SOCKADDR_COMMON (sin_);
实际上为:
sa_family_t sin_family;
由于做了宏定义:
#define __SOCKADDR_COMMON(sa_prefix) \
sa_family_t sa_prefix##family