我想知道在C语言中是否有一种方法可以像这样定义#define

#define something #define
something a 42
something b 42

最佳答案

不,没有。如果宏的扩展生成了类似于预处理器指令的内容,则不会将其作为一个处理,在源代码中留下一个#,编译器可以看到它,然后它将反对#是一个意外的标记(语法错误)。
ISO/IEC 9899:2011标准
6.10.3.4重新扫描和进一步更换
生成的完全宏替换的预处理标记序列未被处理
作为预处理指令,即使它类似于一个,但所有pragma一元运算符
然后按照下面6.10.9中的规定处理其中的表达式。
引用的“pragma一元运算符”是接受字符串文本的_Pragma()运算符。
这个词的措辞非常相似,措辞是相似的,但没有提到cc操作符,因为它不存在于这个词中。
您可以在开放标准网站上找到C2011标准的草稿:
http://www.open-std.org/jtc1/sc22/wg14/
连同工作文件、委员会会议的“邮件”等。
(JTC1是联合技术委员会1;SC22是编程语言标准化委员会22;WG14是工作组14,负责C标准。WG21负责C++标准。
您可以从ANSI获得您自己的、个性化的标准PDF副本,价格为30美元我认为这对任何一个严肃的C程序员来说都是必要的投资。

关于c - 定义#define宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12447952/

10-12 23:28