gpt4 book ai didi

c - 在#if 指令之前强制宏定义

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:22 25 4
gpt4 key购买 nike

我惊讶地发现未定义的宏在预处理器表达式中使用时会自动分配 0 值。例如:

//#define A
#if A == 0
// do something
#endif

这段代码将在“做某事”部分编译,而我预计它会给出一个错误。我发现 GCC 有一个 option to warn against this case :

  • Identifiers that are not macros, which are all considered to be the number zero. This allows you to write #if MACRO instead of #ifdef MACRO, if you know that MACRO, when defined, will always have a nonzero value. Function-like macros used without their function call parentheses are also treated as zero.

    In some contexts this shortcut is undesirable. The -Wundef option causes GCC to warn whenever it encounters an identifier which is not a macro in an #if.

因此,我正在为 IAR Embedded Workbench IDE 寻找与 -Wundef 等效的选项。有这样的选择吗?

最佳答案

IAR Embedded Workbench 中的 IAR C/C++ 编译器可以检测到这一点。但是,默认情况下它被配置为未显示的备注

您可以使用命令行选项 --remarks,或者使用 --diag_warning=Pe193 将严重性提高到警告或错误--diag_error=Pe193.

关于c - 在#if 指令之前强制宏定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701369/

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