簡體   English   中英

C ++:在標頭中聲明非全局變量?

[英]C++: Declaring non-global variables in header?

在下面的代碼中,y在func()中使用。 在按照慣例和/或優化方面編譯代碼時,是否需要在頭文件中聲明y? 如果是這樣,我是否可以阻止y出現在每個包含標頭的文件中?

   //func.h
    #ifndef FUNC_H
    #define FUNC_H

    int func(const int x);

    #endif // FUNC_H
    //


    //func.cpp
    const int y = 5;

    int func(const int x)
    {
      return x + y;
    }
    //

不,如果y僅在func.cpp中使用,則無需(從約定或性能方面)在頭文件中聲明它。 你的東西對我來說很好。

常量隱式具有內部鏈接,因此只能在func.cpp內部訪問。

您可以考慮使其成為constexpr

如果y僅在使用func()你可以考慮宣布它里面func() 我認為假設全局變量會表現更好是過早的優化。

一種選擇

在頭文件中有聲明

extern const int y;

在一個源文件中定義變量

const int y =5;

暫無
暫無

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

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