簡體   English   中英

如何在單獨的 config.h 文件中聲明全局變量

[英]How to declare global variables in seperate config.h file

我在 VScode 中而不是在 Visual Studio 中編譯時遇到了問題。

我在項目的包含文件夾中有一個 header 文件config.h 請注意,我已將build_flags = -I include添加到 platformio.ini。 config.h ,我需要為我需要的 select 數量的全局變量進行一些聲明。 其他一切都是用指針等完成的。

我有兩個問題。

  1. 在 config.h 中聲明變量(例如int myVar )時,出現多重聲明錯誤。 為什么?
  2. 我可以將變量聲明為extern int myVar 但隨后我需要在 a.cpp 文件中重新聲明變量 myVar,例如 main.cpp。 這怎么做最好?

最終,如何在 header 中聲明一個全局變量,將 header 包含在其他幾個文件中,然后全局使用該變量? (這主要是為了創建隊列和信號量)

如果您只需要全局常量,請參閱在 C++ 中定義全局常量 假設您需要一個可變的全局變量,有兩種選擇。 無論哪種情況,我們的全局變量都只有一個實例。

經典解決方案: extern

// header file
extern MyQueue queue;

在這里,我們簡單地說queue是在其他一些源文件中定義的。

// source file
MyQueue queue{1, 2, 3};

然后,我們在源文件中定義它。 另請參閱有關外部鏈接的 cppreference

C++17 解決方案: inline

// header file (no source file needed)
inline MyQueue queue{1, 2, 3};

inline對函數的作用與對變量的作用相同。 它放寬了變量的單一定義規則 (ODR),允許我們在多個位置定義它。 這樣,當在多個源文件中包含 header 時,我們不會收到任何 linker 錯誤。

暫無
暫無

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

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