问题,解决不了

来源:互联网 发布:linux 获取网卡ip 编辑:程序博客网 时间:2024/05/01 18:18

为什么dll中

#ifndef _XXX_H

#define _XXX_H

#endif

enum,class都不会出现重定义问题,但是struct就会出现


回答:::::::::

enum和class都是内部链接,而struct是外部链接,所以,一个cpp里面可以有一个enum,class,反正是内部链接,各用各的,但是struct是外部链接,所有的cpp里面只能有一个struct


默认链接属性:对于函数和变量,模认外部链接,对于const变量,默认内部链接。(可以通过添加extern和static改变链接属性)

       外部链接的利弊:外部链接的符号,可以在整个程序范围内使用(因为导出了符号)。但是同时要求其他的编译单元不能导出相同的符号(不然就是duplicated external simbols)

       内部链接的利弊:内部链接的符号,不能在别的编译单元内使用。但是不同的编译单元可以拥有同样名称的内部链接符号。

内联函数:
       C++里的内联函数由于类似于一个宏,因此不存在链接属性问题。


0 0