gpt4 book ai didi

c-preprocessor - 预处理指令内部定义?

转载 作者:行者123 更新时间:2023-12-04 02:59:45 27 4
gpt4 key购买 nike

这个问题已经在这里有了答案:




9年前关闭。




Possible Duplicate:
C preprocessor: using #if inside #define?



在define的rhs中包含预处理器指令是否有任何技巧?问题是,预处理器将所有rhs折叠成一条长行。但是也许有一个窍门?

我想要在rhs中的示例是
#define MY_CHECK \
#ifndef MY_DEF \
# error MY_DEF not defined \
#endif


目的是简短:使用1行快捷方式,而不是多行检查顺序。

最佳答案

正如其他人指出的那样,预处理器宏不能扩展为任何其他预处理器指令。如果这样做,您通常会在输入中遇到有关杂散“#”字符的奇怪错误。但是,有时您可以做一些事情来获得想要的东西。如果您想将宏扩展为以下内容:

#ifdef SOMETHING
...some code...
#endif

如果某些代码不包含任何预处理程序指令,则可以定义IFDEF宏:
#ifdef SOMETHING
#define IFDEF_SOMETHING(X) X
#else
#define IFDEF_SOMETHING(X)
#endif

然后在另一个宏中使用 IFDEF_SOMETHING(...some code...)

如果您有一堆要重复多次的预处理程序碎片,则可以将其粘贴在自己的文件中,然后在需要的每个位置使用 #include "stuff"

关于c-preprocessor - 预处理指令内部定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6148066/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com