C語言編譯中,如何查看定義了哪些宏?
01-05
在陌生的C語言項目中,進行debug時,如何方便快捷的查看哪些宏被定義了,哪些沒有定義?
例如:#if defined(AAA)......
#if defined(BBB)......#endif#endif
這種宏很多很亂,如何方便快捷知道哪些宏定義了,最快找到代碼真正走的是哪些路徑?
1、打開Visual Studio Command Prompt
2、輸入cl /P /C Fuck.cpp3、打開Fuck.i,就可以看到預處理後的結果了
通常來說,調試宏都是這麼乾的。然後你瀏覽一遍看看都展開成了什麼,就明白了。我覺得最簡單的辦法是使用ide,例如VS和eclipse。然後不編譯的部分會顯示灰色,要編譯的是黑色。這就一目了然了
輪子哥的說的是正確做法,但未必最快捷,判斷一個宏有沒有打開,還有更方便的辦法,比如#ifdef AAA
...
#else...#endif我們在其中加一行明顯不符合語法的句子:
#ifdef AAAFuck...#else...#endif如果編譯出錯了就是定義了AAA,否則就是沒定義。gcc -e -p fucker.c
推薦閱讀:
※如果要寫一個類似於現在Word的軟體,僅用C語言或者C++,可以完成嗎?
※清華大學譚浩強的C語言書籍怎麼樣?
※譚浩強的 C 語言技術真很牛嗎?他寫過哪些厲害的程序?
※為什麼printf("%ld
", -2147483648/1000000000);得到的結果是2而不是-2?