您的位置:首页 > 其它

链接之外部链接与内部链接

2016-04-15 00:27 260 查看
关于在头文件里面的const,static,inline,解释

使用readelf命令可以看到

static类型的变量或者函数在symbol table 中 LOCAL

const类型的变量在symbol table 中 LOCAL 若修饰 函数会有多重定义冲突

inline修饰的函数在symbol table 中 WEAK

static 与inline同时修饰函数 在symbol table 中 LOCAL

以上能够避免多重定义的都是属于内部链接(inline不清楚,作用到是类似)

没有修饰的全局函数则为GLOBAL 比如 int main()

没有修饰的全局变量则为GLOBAL 比如 int s;

当我们在头文件a.h 定义类 在 a.cpp中定义对象的时候 该对象在symbol table 中 LOCAL 其构造函数为WEAK(对比上面的inline) 在类体内部将函数实现其实就是给函数加上了inline属性

文件开始

class A{

//函数的实现在这里

};

文件结束

若是下面这样就会发生多重定义冲突

文件开始

class A{

//函数的声明在这里

};

//函数的实现在这里

文件结束

/函数的实现在这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: