C ++:在标头中声明非全局变量?

时间:2014-10-29 00:54:21

标签: c++ header

在下面的代码中,y用于func()。虽然代码编译,在约定和/或优化方面,是否需要在头文件中声明?如果是这样,我是否可以阻止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;
    }
    //

2 个答案:

答案 0 :(得分:1)

不,如果y仅用于func.cpp,那么就不需要(在约定或性能方面)在头文件中声明它。你有什么看起来很好。

一个常量隐式具有内部链接,因此只能在func.cpp中访问。

您可以考虑将其设为constexpr

如果y仅用于func(),您可以考虑在func()内声明它。一世 认为假设一个全局变量将表现更好是过早优化。

答案 1 :(得分:0)

一个选项

在头文件中有声明

extern const int y;

在其中一个源文件中定义变量

const int y =5;