您的位置:首页 > 编程语言 > C语言/C++

C++链接器弱名称重复时链接的隐患

2017-08-13 11:40 85 查看
对于多个CPP中存在相同弱名称的情况下,g++链接的时候是不会提示错误的。

另外,如果一个CPP中存在强名称a,另一个CPP中存在弱名称a,则弱名称a在链接时会引用到强名称a的地址。

只有当两个CPP中都存在强名称a都时候,链接才会出错。

针对第二条,这个规则会引发一个比较严重的隐患。

例如

A.cpp

#include "b.cpp"

int a = 10;

int b= 20;

int main()

{

    fun();

}

b.cpp

double a;

void fun()

{

    a = 0.0;

}

这种情况下,b.cpp中都a引用了a.cpp中int a的地址,因此func中对于double a都操作会影响到a.cpp中int a和int b两个变量的值,还是挺危险的,最主要还不是很容易查到这样的BUG,特别是在大型工程中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: