1

如果函数定义不可用并且只有函数原型被外部化在头文件中,那么 g++ 编译器不会给出任何错误。但在链接期间,g++ 链接器将识别错误并对相应的 fn 说“未定义的引用”。我不在乎 abt fn 的定义。我只想获取二进制图像,并且每当从该图像调用相应的 fn 时,那一次我只想崩溃。我可以知道链接器标志来抑制这个“未定义的引用”链接器错误吗?在 VC++ 中,有一个名为 /FORCE 的选项。有没有类似的标志?

4

1 回答 1

2

这是完全未定义的行为,但如果你想要崩溃......

如果你有一个未定义的符号,比如一个函数,void h()那么它的错位名称将是_Z1hv,所以如果你定义了一个名称和外部链接的符号,即使类型错误,它也会被找到:

int _Z1hv = 0;
void h();

int main()
{
  h();
}

这将链接,但在运行时崩溃,因为调用h()将尝试在整数变量的地址“运行”一个函数。

这样做是错误的,令人作呕的,会杀死小猫。

于 2012-08-23T13:04:10.533 回答