C ++命令行调试参数

Cod*_*lus 1 c c++ debugging command-line

通过命令行运行程序时,如何更改布尔宏的值?例如,假设我的cpp文件中包含以下宏,则将其命名为MyCpp.cpp

#define DEBUG 1
Run Code Online (Sandbox Code Playgroud)

运行程序时如何更改此设置?通过命令行:

g++ -Wall -Wextra -o MyCpp MyCpp.cpp
Run Code Online (Sandbox Code Playgroud)

我很确定您指定了某种命令行选项,这会响起钟声吗?另外,我不想使用argv[]

Ker*_* SB 5

首先,更改您的源代码:

#ifndef DEBUG
#  define DEBUG 1
#endif
Run Code Online (Sandbox Code Playgroud)

现在您可以在命令行中说:

#ifndef DEBUG
#  define DEBUG 1
#endif
Run Code Online (Sandbox Code Playgroud)

命令行参数-DFOO=bar与放入#define FOO bar源代码的作用相同。您需要#ifndef警惕,以避免非法重新定义宏。


有时人们使用辅助宏来阻止定义另一个宏:

#ifndef SUPPRESS_FOO
#  define FOO
#endif

// ... later

#ifdef FOO
// ...
#endif
Run Code Online (Sandbox Code Playgroud)

现在说-DSUPPRESS_FOO定义FOO代码...