C語言編譯中,如何查看定義了哪些宏?

在陌生的C語言項目中,進行debug時,如何方便快捷的查看哪些宏被定義了,哪些沒有定義?

例如:

#if defined(AAA)

......

#if defined(BBB)

......

#endif

#endif

這種宏很多很亂,如何方便快捷知道哪些宏定義了,最快找到代碼真正走的是哪些路徑?


1、打開Visual Studio Command Prompt

2、輸入cl /P /C Fuck.cpp

3、打開Fuck.i,就可以看到預處理後的結果了

通常來說,調試宏都是這麼乾的。然後你瀏覽一遍看看都展開成了什麼,就明白了。


我覺得最簡單的辦法是使用ide,例如VS和eclipse。然後不編譯的部分會顯示灰色,要編譯的是黑色。這就一目了然了


輪子哥的說的是正確做法,但未必最快捷,判斷一個宏有沒有打開,還有更方便的辦法,比如

#ifdef AAA

...

#else

...

#endif

我們在其中加一行明顯不符合語法的句子:

#ifdef AAA

Fuck

...

#else

...

#endif

如果編譯出錯了就是定義了AAA,否則就是沒定義。


gcc -e -p fucker.c


推薦閱讀:

如果要寫一個類似於現在Word的軟體,僅用C語言或者C++,可以完成嗎?
清華大學譚浩強的C語言書籍怎麼樣?
譚浩強的 C 語言技術真很牛嗎?他寫過哪些厲害的程序?
為什麼printf("%ld
", -2147483648/1000000000);得到的結果是2而不是-2?

TAG:軟體 | 編程 | C編程語言 |