c - -D MACRO 和#define MACRO 的优先级

标签 c gcc c-preprocessor

如果我有一个 C 文件 foo.c 并且我已将 -DMACRO=1 作为编译的命令行选项。但是,如果在头文件中我也有

#define MACRO 2

哪些将获得优先权?

最佳答案

我假设你在做什么,但如果你想从命令行为该宏提供一个非默认值,请尝试这个宏定义:

#ifndef MACRO
#define MACRO 2
#endif

如果 MACRO 已经被定义(通过命令行参数),那么它既不会被重新定义也不会导致错误。

关于c - -D MACRO 和#define MACRO 的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3965956/

相关文章:

gcc - 这是优化错误吗?

c++ - 看似毫无意义的#define of function

c - 我对这个 C 预处理器语句的含义有点迷茫,

c - 从哪里开始用 c 解决这个练习

c - 如何修复“"Pointer being realloc' d 未分配”错误

c++ - 如何为 CMake 添加外部 DLL 路径

python - Cython 和 gcc : can't run compiled program

gcc - 什么是计算机科学中的目标架构?

c++ - C++ 的最小 XML 库?

c++ - 为什么在宏中使用看似毫无意义的 do-while 和 if-else 语句?