[英]C: `Turn on debug messages
这可能是一个非常愚蠢的问题,但是如何在我的代码中打开这些调试消息?
#ifdef DEBUG_MSG
printf("initial state : %d\n", initial_state);
#endif
提前谢谢了,
编译时,请尝试以下操作:
$ gcc -DDEBUG_MSG -o foo foo.c
你必须以某种方式#define
。
0. 在您的代码中。
在您使用该标志之前,直接在您的代码中的某处:
#define DEBUG_MSG
1. 在命令行上。
对于每个源文件,或适当地在您的 makefile 中:
gcc -DDEBUG_MSG main.c
(对于 gcc,标志是-D<macro-name>
,对于 MSVC,它是/D
,对于 ICC 它是前者之一,具体取决于您的操作系统。)
2. 在您的 IDE 某处。
在 IDE 的项目设置中,找到可以放置定义的位置。 在引擎盖下,这是使用 1 完成的。
#ifdef
表示“如果已定义”,您的代码本质上是告诉预处理器检查DEBUG_MSG
是否在其他地方定义。 如果是,它将包含您显示的代码。
如果定义了符号,则 C 预处理器阶段只会将#ifdef/#endif
内的代码传递给编译器阶段。
您通常可以通过(至少)两种方式做到这一点。
第一种是为编译器使用命令行开关,例如:
gcc -DDEBUG_MSG myprog.c
( -D
表示定义其后的预处理器符号,尽管这是特定于实现的,但许多编译器使用相同的开关)。 第二个是像这样放置一行:
#define DEBUG_MSG
在您的实际源代码中#ifdef
之前的某处。
前者通常是首选,因为它允许您控制该行为而无需更改源代码,例如,您可以从相同的源代码生成调试和发布版本。
#ifdef
只有在定义了DEBUG_MSG
时才会扩展您的宏。 您可以通过两种方式做到这一点。 在源代码中执行#define DEBUG_MSG 1
或使用-DDEBUG_MSG
进行编译(如果使用gcc
,其他编译器也有类似的标志)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.