[英]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.