c - 如何取消任何先前的名称定义,在 gcc 中内置或提供 ‘-D’ 选项

标签 c linux gcc

<分区>

#include <stdio.h>
#define DEBUG

#ifdef DEBUG
#define MAGIC 5
#endif

int main(void){
        printf("\n magic is %d",MAGIC);
        return 0;
    }

现在我想取消DEBUG所以这个程序应该给出编译错误

gcc test.c -U DEBUG

但它不会给出任何错误并且工作正常。 这意味着 -U 不起作用。

那么我如何在 gcc 的编译时取消定义任何名称?

最佳答案

男人 GCC说,

 -D and -U options are processed in the order they are given on the command line.

似乎您无法从程序中定义的 CLI 取消定义 MACRO。

关于c - 如何取消任何先前的名称定义,在 gcc 中内置或提供 ‘-D’ 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21576032/

相关文章:

c++ - 如果是闪存,为什么位置 0x00000000 可以访问

c - 无法通过读取 x、y 坐标输入到数组来计算多边形的周长

python - 原子编辑器 : CMD + R => No Symbols Found

c++ - 在使用包含冒号的类函数宏时,是什么导致编译器出现这种差异?

c++ - 为什么这个使用统一初始化的代码片段使用 g++4.6 而不是 g++4.7 编译?

c - 如何验证函数 X() 是从函数 Y() 而不是从函数 Z() 调用的?

在C中创建静态变量

linux - 处理器功能的 CMake 测试

linux - 用于检测系统是 32 位还是 64 位的 Shell 脚本

regex - 根据内容在 Linux 中输出文本 block