這可能是一個非常愚蠢的問題,但是如何在代碼中打開這些調試消息?C:`打開調試消息
#ifdef DEBUG_MSG
printf("initial state : %d\n", initial_state);
#endif
提前許多感謝,
這可能是一個非常愚蠢的問題,但是如何在代碼中打開這些調試消息?C:`打開調試消息
#ifdef DEBUG_MSG
printf("initial state : %d\n", initial_state);
#endif
提前許多感謝,
編譯時,嘗試這樣的事:
$ gcc -DDEBUG_MSG -o foo foo.c
+1,因爲這意味着不必修改代碼本身來添加'#define'。 –
#ifdef
會讓你的宏只有DEBUG_MSG
定義進行擴展。你可以用兩種方法來做到這一點。在源要麼做一個#define DEBUG_MSG 1
或使用-DDEBUG_MSG
編譯(如果使用gcc
,還有其他的編譯器太相似的標識)
你將不得不#define
,不知怎的。
0。在你的代碼。
直接在你的代碼中使用該標誌在什麼地方:
#define DEBUG_MSG
1.在命令行。
對於每一個的資源文件,或者適當地在你的makefile:
gcc -DDEBUG_MSG main.c
(海合會,標誌是-D<macro-name>
,對於MSVC,它是/D
,對ICC是前者的一個,這取決於您的操作系統。)
2.在你的IDE,某處。
在IDE的項目設置,找到在那裏你可以把定義。引擎蓋下,這是通過使用1
C預處理器階段,如果符號被定義將僅通過一個#ifdef/#endif
內部代碼編譯器相完成。
您可以在通常(至少)兩種方式做到這一點。
第一種方法是使用命令行開關,用於編譯器,例如:
gcc -DDEBUG_MSG myprog.c
(-D
意味着以限定預處理器符號跟隨它,雖然這是特定於實現的,許多編譯器使用相同的開關)。第二個是將這樣一行:
#define DEBUG_MSG
你實際的源代碼的某個地方#ifdef
前內。
前者通常是首選,因爲它允許您在不更改源代碼的情況下控制該行爲,以便例如可以從相同的源代碼生成調試和發佈版本。
您需要#define DEBUG_MSG。你的編譯器是什麼? –
有沒有愚蠢的問題。那麼,有,但是這不是其中之一:-) – paxdiablo
英特爾icc是編譯器 – Eamorr