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

来源:互联网 发布:herry it 编辑:程序博客网 时间:2024/05/22 01:26

关于在头文件里面的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{

//函数的声明在这里

};

//函数的实现在这里

文件结束


0 0
原创粉丝点击