2011-09-27 101 views
0

我有一些需要預處理的C源文件,以便我可以使用其他應用程序在我的文件中添加代碼覆蓋檢測代碼。 要做到這一點,我用GCC(我使用這個在LEON2處理器所以這是一個有點修改,但它本質GCC 3.4.4)使用以下命令行:使用GCC預處理C代碼

sparc-elf-gcc -DUNIT_TEST -I. ../Tested_Code/0_BSW/PKG_CMD/MEMORY.c -E > MEMORY.i 

使用標準文件這個作品完美的,但是這個程序員使用了一個密碼,不管我做什麼,代碼都不會被預處理。我不明白爲什麼因爲我將-DUNIT_TEST傳遞給GCC明確定義它。

有沒有人有任何線索可能導致這種情況?我檢查了生成的.i文件,並且正如我所期望的那樣,我的UNIT_TEST代碼不在其中,所以在檢測時出現錯誤。

回答

2

任何包裹在#ifndef中的東西只有在未定義的情況下才會被解析,因此您需要移除該定義以獲取該塊內的所有代碼。如果預處理時間符號未定義,GCC不能爲所有#ifdef和#ifndef吐出預處理信息。

+0

謝謝耶穌,當我發佈這個,我明白我的問題,這是清早在這裏:P抱歉的傢伙浪費你的時間...這是我的編碼器,使用ifndef而不是idef ... – Leo

+0

沒關係我已經在尖叫之前盯着代碼,爲什麼只是意識到這是一個愚蠢的錯誤。 –