簡體   English   中英

C:`打開調試消息

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM