繁体   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