运算符#和##
TAG:预编译和宏定义,运算符#和##
TEXT:
在ANSI C中为预编译指令定义了两个运算符——#和##。
# 的作用是实现文本替换,例如
#define HI(x) printf("Hi,"#x"/n");
void main()
{
HI(John);
}
程序的运行结果
Hi,John
在预编译处理的时候, "#x"的作用是将x替换为所代表的字符序列。在本程序中x为John,所以构建新串“Hi,John”。
##的作用是串连接。
例如
#define CONNECT(x,y) x##y
void main()
{
int a1,a2,a3;
CONNECT(a,1)=0;
CONNECT(a,2)=12;
a3=4;
printf("a1=%d/ta2=%d/ta3=%d",a1,a2,a3);
}
程序的运行结果为
a1=0 a2=12 a3=4
在编译之前, CONNECT(a,1)被翻译为a1, CONNECT(a,2)被翻译为a2。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wade23/archive/2009/09/04/4517829.aspx