关于两个关键字export和extern的区别??
看书的时候留意到了一两个关键字,感觉不到他们的区别.都是声明名字具有外连接。。谁能帮帮我,,解答一下
[解决办法]
export是为了实现模板分离提出的关键字,但是地位很尴尬,大部分编译器都没有支持。C++11中正式取消了export,并用extern代替,简单说就是把两个关键字合并成了。
[解决办法]
这么说吧,extern在旧版本里是不能实现模板分离的(定义和声明分开)。C++模板有特殊性,所以必须在头文件中同时完成定义和声明(这和普通的声明又区别,非模板都不建议在头文件里写定义)。
后来,为了实现分离,提出了export关键字,但是因为某些原因,主流编译器都没有提供该功能。时间久了,这个关键字就被人遗忘了,主流编译器从来没想过实现他。
不过因为模板分离还是有一定意义的,比如可以节省大型软件的重复编译。新标准中再次被提出后,觉得该功能和extern相似(应该是),然后就把他合并了。现在主流编译都支持外部模板的功能了。