[c语言]c语言中的#和##作用、参数表省略号作用
1. c语言中的#
c语言中的# 用于字符串化参数 #123 相当于 “123”
#define STR(X) #X
print(STR(123));// 输出字符串 “123”
2. c语言中的##
c语言中的## 用于将两个语言符号组合成单个语言符号
#define N(x) N##x
int N(1) = 1; //N1 = 1
int N(2) = 2; //N2 = 2
3. c语言函数参数…
...
和 __VA_ARGS__
一般用在一起,用于表示可变参数
#define PR(...) printf(__VA_ARGS__)
int main()
{
int wt=1,sp=2;
PR("hello\n");
PR("weight = %d, shipping = %d",wt,sp);
return 0;
}
输出结果:
hello
weight = 1, shipping = 2
省略号只能代替最后面的宏参数。
#define W(x,...,y)错误!
##__VA_ARGS__
宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错