【发布时间】:2011-04-22 08:52:05
【问题描述】:
今天刚看完C上关于如何使用#define创建一个manifest常量的阅读和实验,然后想到了一些东西,下面是代码。
#include <stdio.h>
#define dummy main
#define yam {
#define apple }
int dummy(void) //constant substitution main with dummy
yam // constant substitution { with yam
printf("It works!!\n");
return 0;
apple //constant substitution } with apple
正如预期的那样,它就像魅力一样,我只是想知道为什么这样的事情没有导致任何错误,也许我可以理解为什么 main() 可以被替换,因为 main 是一个标识符(给函数的名称, 变量和常量),但是为什么{} 也可以用符号名代替呢?第二件事是,C 使用什么数据类型来存储这个符号常量,它不是用单引号 "" 括起来的字符,也不是整数或浮点数。
【问题讨论】:
-
看在所有神圣事物的份上,不要以如此糟糕的方式滥用预处理器!
-
哈哈@Philip,我只是对它感到好奇,所以我这样做了,我不认为我不会用这种方法编写任何软件
-
那么,文本 { 和 } 存储在什么数据类型中?因为我没有用单引号括起来
标签: c c-preprocessor identifier