[英]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.