预编译连接符##  预处理指令
 #include <stdio.h>
    #include<stdlib.h>

#define TR(m,n,p) m##n##p

int main ()
{
printf("%s\n",TR("abc","xy","yz"));
return 0;
}
这段代码为什么编译不过?

3个回答

gcc?那好像要定义2个宏,可以看看这个解释http://www.cnblogs.com/wb-DarkHorse/p/3588787.html

u011212125
Alphuae 看解释是编译器的问题;谢谢啦;
大约 5 年之前 回复

应该能编译过呀,你那边报的错误是什么?

u011212125
Alphuae 楼下是报错信息,我把o改成了p;这应该不是问题;
大约 5 年之前 回复

In function ‘main’:
define.c:7:19: error: pasting ""abc"" and ""xy"" does not give a valid preprocessing token
printf("%s\n",TR("abc","xy","yz"));
^
define.c:3:20: note: in definition of macro ‘TR’
#define TR(m,n,o) m##n##o
^
define.c:7:25: error: pasting ""xy"" and ""yz"" does not give a valid preprocessing token
printf("%s\n",TR("abc","xy","yz"));
^
define.c:3:23: note: in definition of macro ‘TR’
#define TR(m,n,o) m##n##o

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐