【发布时间】:2013-01-20 00:10:09
【问题描述】:
我正在使用 eclipse,并且在我的 c/c++ 代码中不断收到对 `__assert_func' 错误的未定义引用。
我想知道是否有办法判断正在定义什么(#define **)。我可以手动浏览我的文件,但我正在处理很多文件,这需要一段时间。是否有编译器选项或工具可以为我列出这些?
谢谢,
山姆
【问题讨论】:
标签: c++ c eclipse compiler-errors debug-symbols
我正在使用 eclipse,并且在我的 c/c++ 代码中不断收到对 `__assert_func' 错误的未定义引用。
我想知道是否有办法判断正在定义什么(#define **)。我可以手动浏览我的文件,但我正在处理很多文件,这需要一段时间。是否有编译器选项或工具可以为我列出这些?
谢谢,
山姆
【问题讨论】:
标签: c++ c eclipse compiler-errors debug-symbols
这取决于编译器。如果您正在运行 GCC,则可以阅读此内容。
【讨论】:
未定义的引用与#defines 无关。这是一个链接器错误,您可能忘记链接到 .lib/.a 文件。
【讨论】:
#define assert(x) assert_func(x, __FILE__, __LINE__) 或类似的。
您通常可以从编译器生成预处理器输出 - 例如g++ -E myprog.cpp > myprog.i。我认为CL -E 在 Visual Studio 中做同样的事情,其他编译器往往有类似的选项。
听起来您缺少的函数确实是 ASSERT 或 assert 宏的一部分。
【讨论】:
#if 0 / #endif 放在函数内容(或函数外部)周围有助于减少“受到怀疑”的代码量。