簡體   English   中英

在頭文件中使用const

[英]Using const in header-file

在file.h中:

 extern const int ONE;

在file.cpp中

#include "file.h"
const int ONE = 1;

在main.cpp中

#include <iostream>
#include "file.h"
int main()
{
    std::cout << ONE << std::endl;
}

問題:為什么我必須在file.cpp中使用#include "file.h" ONE有一個定義。

謝謝

默認情況下,聲明為const變量具有內部鏈接,就好像它們也被聲明為static 如果你包含標題,那么extern聲明將給它外部鏈接,一切都會好的。 否則,其他翻譯單元無法提供該定義。

您可以通過在定義中添加extern來避免包含標題; 但最好還是包含標題,這樣編譯器就可以檢查這兩個聲明是否兼容。

更好的方法是在標題中用內部鏈接定義它,

const int ONE = 1;

在源文件中沒有定義; 然后它的值可用作常量表達式。

ONE有一個定義。

一個定義 ,是的。 但是在file.cpp包含頭文件的file.cpp處在於它提供了一個不同的ONE 聲明 - 即一個標記為extern 這可以防止隨后定義的ONE常量具有內部鏈接,從而不會被導出。

為了使ONE定義 (在單獨的編譯單元中)對main.cpp可見, ONE的鏈接不能是內部的。

暫無
暫無

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

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