【发布时间】:2014-01-21 13:56:45
【问题描述】:
是否有忽略未定义引用的编译器选项?我正在Linux下编译C++代码。
【问题讨论】:
-
当你可以修复时为什么要忽略? - stackoverflow.com/questions/12573816/…
-
忽略这些错误的唯一方法是查看其他地方 ;)
标签: c++ linux gcc compiler-construction
是否有忽略未定义引用的编译器选项?我正在Linux下编译C++代码。
【问题讨论】:
标签: c++ linux gcc compiler-construction
没有。这是不可能的。链接器在物理上无法生成带有未定义引用的输出可执行文件。这不是链接器做出的选择。
这有点像说,“排序这个列表,但我不会告诉你列表是什么”或“解决我的问题,但我只转储了代码”。
【讨论】:
--unresolved-symbols=ignore-all 究竟做了什么?我猜它会在运行时编译、链接和崩溃。
你不是在编译,你是在链接。当您链接的程序调用未在您链接在一起的程序部分内定义的函数时,会发生未定义的引用错误。忽略该错误意味着程序调用了一个不存在的函数 - 那么应该发生什么?
所以简短的回答是:没有这样的选择,而且没有意义。
【讨论】:
编译器已经忽略了未定义的引用,这完全是设计使然。
【讨论】:
对于以下内容,我假设您指的是链接器错误而不是编译器错误。 看看这个: Can GCC not complain about undefined references?
这对我很有用,因为我正在编写在 c 文件中使用一堆东西的测试用例。对我来说,问题是在同一个 C 文件中定义了一些函数,其中包括对未定义函数的引用。也就是说,在我有限的测试范围内,它们对我来说是未定义的,但我没有调用这些函数。 因此我希望它编译和链接没有错误。 还有其他解决方案,例如:Is there a way to ignore an unused undefined references? 但我无法让它工作(可能是因为我有旧版本的 gcc)
【讨论】: