【发布时间】:2011-07-30 03:55:31
【问题描述】:
在什么情况下,GCC 可能在尝试调用虚构函数时不抛出“未定义的引用”链接错误消息?
例如,这段C代码被GCC编译链接的情况:
void function()
{
made_up_function_name();
return;
}
...即使made_up_function_name 不存在于代码中任何地方(不是头文件、源文件、声明或任何第三方库)。
这种代码可以在一定条件下被 GCC 接受和编译,而不接触实际代码吗?如果有,是哪个?
谢谢。
编辑:在其他任何地方都没有以前对made_up_function_name 的声明或提及。这意味着整个文件系统的 grep -R 将仅显示确切的单行代码。
【问题讨论】:
-
可以(只要您编译的是 C,而不是 C++)。你想完成什么?
-
我不想完成任何事情,它已经在发生,我想知道为什么它是可能的。如果我使用“-g”并使用文本编辑器编辑文件,made_up_function_name 实际上存在于最终的链接二进制文件中。
-
所有建议的答案都需要至少定义函数,即使原型是可选的。 “made_up_function_name”未在任何地方定义或原型化。
-
阻止它成功链接,但不能编译。
标签: c gcc compiler-errors compiler-warnings