2012-08-17 56 views
1

如果函数定义不可用,并且只有函数原型出现在头文件中,那么g ++编译器不会给出任何错误。但在链接过程中,g ++链接器将识别错误并将“未定义的引用”指向相应的fn。我不在乎定义。我只是想获得二进制图像,每当相应的fn从该图像调用,那么只有我想崩溃。我可以知道链接器标志来压制这个“未定义的引用”链接器错误吗?在VC++中,有一个叫/ FORCE的选项。有没有类似的标志?如何避免g ++链接器错误“undefined reference”

+0

对于未定义的符号而言,您预期会发生什么? – Flexo 2012-08-17 11:14:09

+0

感谢您的关注。如果函数以外的符号显示相同的弱符号行为,那将是非常好的。但它不是强制性的。 – siva 2012-08-22 06:25:42

回答

1

这是完全不确定的行为,但如果你想有一个崩溃...

如果你有一个未定义的符号,如功能void h()那么它的名字将是_Z1hv,所以如果你定义一个符号,名称和外部链接就会发现,即使类型错误:

int _Z1hv = 0; 
void h(); 

int main() 
{ 
    h(); 
} 

这将链接,但在运行时坠毁因为调用h()将尝试“运行”功能在整数的地址变量。

这样做是错误的,恶心和杀死小猫。

+0

感谢您的关注。我的事情,你以一种错误的方式理解我的怀疑。我正在寻找gcc/g ++链接器标志来抑制错误“未定义的参考”。 – siva 2012-08-30 15:53:44

+0

你没有一个“怀疑”你有问题。 “怀疑”并不意味着同样的事情。无论如何,没有这样的可执行文件的选项。 – 2012-09-09 22:04:15