簡體   English   中英

如何在C ++中將頭文件中的初始化變量導出到main.cpp文件中?

[英]How do I export an initialized variable from a header file to my main.cpp file in C++?

我的main.cpp包含頭文件setup.h
setup.h從文件讀取數據,然后在main.cpp中使用它。
setup.h讀取的數據文件中,一條數據是單個float變量,我需要在main.cpp中的函數中(從另一個頭文件使用)使用它。

在頭文件中定義變量時,我不能使用extern,因為那樣我就不能用文件中的數據對其進行初始化(編譯時會出錯):

安裝程序

...
extern float G = 0; 
input >> G;
...

main.cpp

...
float G;
instance function(G);
...

如何在main.cpp文件中獲取初始化變量?

在標頭中,您只需要聲明變量,以便編譯器知道它存在於某個位置:

extern float G;

在編譯單元(cpp)之一中,必須定義變量。 然后可以初始化它:

float G = 0.0;

不要濫用全局變量;-)

使用#include -directive包含文件時,您可以認為所包含文件的內容直接插入了#include -statement的位置。 這意味着頭文件的內容不是單獨編譯的,而是在包含它的翻譯單元的過程中(以及在包含它的地方的上下文中)進行編譯的。

因此,您的代碼可能會導致...

extern float G = 0; 
input >> G;
float G;

然后有幾個問題。

首先,變量G被定義兩次。 請注意, extern與初始化程序一起不僅聲明而且實際上定義了一個變量(盡管使用了extern -keyword)。 其次,語句input >> G可能在不允許的文件范圍內使用(此類代碼必須放置在函數內)。

所以你唯一能做的就是...

安裝程序

extern float G; // no initialisation here

setup.cpp

float init() {
  float dummy;
  cin >> dummy;
  return dummy;
}

float G = init(); // definition and initialization through a function

main.cpp

#include "setup.h"

int main() {
  cout << G;  // use of (initialized, externally defined) G
}

暫無
暫無

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

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