我正在嘗試構建Amaya。當構建與調試C++預處理器
error: expected unqualified-id before ‘(’ token
未能我跑了G ++只與預處理器上無法編譯,看看發生了什麼事情的文件(-E代替-c選項)。這產生了一個80,000行文件,告訴我'Blue'已被(2 < < 8)所取代,這清楚地解釋了錯誤。如果我糾正這個問題,文件編譯得很好。我想我可以忍受這一點,但我想知道爲什麼會發生這種情況。
有什麼辦法可以跟蹤預處理器如何替換特定的字符串,在這種情況下,'藍'?
=================更新===================
好了,我找到了罪魁禍首:
> headers=`g++ [omited for brevity] -M \
../../thotlib/dialogue/AmayaClassicNotebook.cpp`
> for file in $headers ; do grep -s -H Blue $file | grep "(2 << 8)";done
/usr/local/include/gc.h:#define Blue (2 << 8)
所以加上#undef藍修正了這個問題。因此,使用-M和grep的組合似乎可以,但有時C++預處理器定義可能是真正的森林;我很好奇是否有更好的方法,也許有一些聰明的GNU工具。
哪個平臺? – laalto 2009-07-05 12:04:23
i686 GNU/Linux。 – Alex 2009-07-06 21:43:40