C:`打开调试消息

时间:2011-07-14 11:35:09

标签: c debugging messages

这可能是一个非常愚蠢的问题,但如何在我的代码中打开这些调试消息呢?

#ifdef DEBUG_MSG
    printf("initial state : %d\n", initial_state);
#endif

非常感谢,

5 个答案:

答案 0 :(得分:9)

编译时,请尝试以下方法:

$ gcc -DDEBUG_MSG -o foo foo.c

答案 1 :(得分:8)

你必须以某种方式#define

0。在您的代码中。

在使用该标志之前,直接在您的代码中使用

#define DEBUG_MSG

1。在命令行上。

对于每个源文件,或者在makefile中适当地:

gcc -DDEBUG_MSG main.c

(对于gcc,标志为-D<macro-name>,对于MSVC,它是/D,对于ICC,它是前者之一,具体取决于您的操作系统。)

2。在您的IDE中,某处。

在IDE的项目设置中,找到可以放置定义的位置。在引擎盖下,这是使用1完成的。

答案 2 :(得分:4)

#ifdef表示“如果已定义”,您的代码实际上会告诉预处理器检查是否在其他地方定义了DEBUG_MSG。如果是,它将包含您显示的代码。

答案 3 :(得分:2)

如果定义了符号,C预处理器阶段只会将#ifdef/#endif内的代码传递给编译器阶段。

您通常可以(至少)以两种方式执行此操作。

第一种是为编译器使用命令行开关,例如:

gcc -DDEBUG_MSG myprog.c

-D表示定义其后的预处理器符号,虽然这是特定于实现的,但许多编译器使用相同的开关)。第二个是放置一行:

#define DEBUG_MSG

#ifdef之前的某个实际源代码中。

前者通常是首选,因为它允许您控制该行为而无需更改源代码,例如,您可以使用相同的源代码生成调试和发布版本。

答案 4 :(得分:1)

#ifdef仅在定义DEBUG_MSG时才会展开您的宏。你可以用两种方式做到这一点。在源代码中执行#define DEBUG_MSG 1或使用-DDEBUG_MSG进行编译(如果使用gcc,其他编译器也会有类似的标记)