为什么const意味着C ++中的内部链接,当它不在C中时?

为什么const意味着C ++中的内部链接,当它不在C中时?

见主题。他们在想什么?

更新:从“静态”更改为“内部链接”以避免混淆。

举个例子......把以下内容放在一个文件中:

const int var_a = 1;int var_b = 1;

......并g++ -c test.cpp仅用出口进行编译var_b


阿波罗的战车
浏览 481回答 3
3回答

繁星淼淼

我相信你的意思为什么const意味着C ++中的内部链接确实,如果在命名空间范围内声明一个const对象,那么它就具有内部链接。附录C(C ++ 11,C.1.2)给出了基本原理更改:显式声明为const且未显式声明为extern的文件范围名称具有内部链接,而在C中则具有外部链接基本原理:因为const对象可以在C ++中用作编译时值,所以这个特性促使程序员为每个const提供显式的初始化值。此功能允许用户将const对象放在许多编译单元中包含的头文件中。

牛魔王的故事

正如litb所说,const对象具有内部联系。这是因为它们的用途如下:// a.cppconst int BUFSIZE = 100;char abuf[BUFSIZE];// b.cppconst int BUFSIZE = 256int bbuf[BUFSIZE];

HUX布斯

在C&C ++中,术语静态有多种含义(它可以控制链接和存储)你必须阅读Stroustrup的D&E才能理解他的基本原理 - 但是当你在命名空间范围内声明一个变量为const时,它会自动具有内部联系 - 而在C中,您必须将其声明为静态以强制它具有内部链接。当然在C ++中,不推荐使用静态控制链接,匿名命名空间可用于模拟C ++中的内部链接。C ++中的const变量应该替换预处理器常量 - 并且由于预处理器常量仅在定义它们的文件中可见,类似地,const自动使变量仅在定义它的文件中可见。
打开App,查看更多内容
随时随地看视频慕课网APP