【发布时间】:2010-11-08 05:00:56
【问题描述】:
我正在尝试构建 Amaya。当构建失败时
错误:'(' 标记之前的预期 unqualified-id
我在编译失败的文件上仅使用预处理器(将 -c 选项替换为 -E)运行 g++,以查看发生了什么。这产生了一个 80,000 行的文件,显示“蓝色”已被 (2
有什么方法可以跟踪预处理器如何替换特定字符串,在本例中为“Blue”?
================= 更新====================
好吧,我找到了罪魁祸首:
> 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 Blue 解决了这个问题。因此,使用 -M 和 grep 的这种组合似乎没问题,但有时 C++ 预处理器定义可能是一个真正的森林;我很好奇是否有更好的方法,也许是一些聪明的 GNU 工具。
【问题讨论】:
标签: c++ c-preprocessor