簡體   English   中英

為什么'x'有內部聯系而不是外部聯系?

[英]Why does 'x' have internal rather than external linkage?

基於我對C ++ 2011規范的閱讀,我認為以下代碼將在file1.cc中創建一個帶有外部鏈接的變量“x”。 我認為我可以從main.cc訪問該變量,因此該程序將打印'x'。 但是,我從main.cc獲取了對'x'的未定義引用的鏈接器錯誤。 為什么file1.cc中的'x'有內部鏈接? 我認為編譯器將第3.5.3節解釋為在file1.cc中給出'x'內部鏈接。 但是我沒有“明確聲明”'x'是'const',因為該部分需要。 我正在使用g ++版本4.6.3。

main.cc:

#include <iostream>

typedef const char CC;

extern CC x[];

int main(void) {
  std::cout << x[0] << std::endl;
}

file1.cc:

typedef const char CC;

CC x[] = "abc";

const使一切變得不同。 在C ++中,在文件范圍內聲明的const變量隱式具有內部鏈接。 這是因為在C ++中,const值可以用作編譯時常量(不留任何東西鏈接)。

看到這個答案

您可以在file1.cc中為您的定義添加extern ,以明確指定x外部鏈接:

extern CC x[] = "abc";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM