红联Linux门户
Linux帮助

LINUX C里面的#和##语法解释

发布时间:2007-10-22 00:28:59来源:红联作者:compat
今天看LINUX内核代码的时候,忽然又看到了#及##的出现,很奇怪的语法,以前的贴子里我点了一下##的用法,但没有去查相关的文档,至于#这里不将那个预处理的作用,先看一下代码示例:

1 #include
2
3 #define TEST_NUM 6
4
5 #define VAR2STR(var) #var
6 #define JOIN(x, y) x##y
7
8 int main(int argv, char* argc[])
9 {
10 printf("%s: %d\n",VAR2STR(TEST_NUM),JOIN(TEST_, NUM));
11 return 0;
12 }

这里面用了这两个符号,下面看一下预处理过后的代码:
.......
938 int main(int argv, char* argc[])
939 {
940 printf("%s: %d\n","TEST_NUM",6);
941 return 0;
942 }

再看一下运行结果:
[root@works]# ./test
TEST_NUM: 6

#及##在这一段代码里的作用表现为:

#将紧接后面的无素(遇到空白视为一个元素),转化为字符串,而##则起到连结的作用.
文章评论

共有 0 条评论