推导全局变量的类型

时间:2016-02-22 14:57:57

标签: c++ c++11 global-variables

假设我在标题中声明了一个全局变量:

extern long global_var;

让编译器在源中定义变量时推断出类型是合理的:

auto global_var;

我至少看到一些专业人士:

  • 避免代码重复,即当我们更改标题中的类型时,不必在源文件中更改它
  • 不易出错,如果先前未声明变量,则无法编译

类似可以用于类的静态成员。

但目前看来似乎不太可能。是否有超过这些好处的缺点?

2 个答案:

答案 0 :(得分:1)

避免必须记住global_var的类型名称并且仍然为编译器获得正确类型的一种方法是使用decltype

extern int global_var;


...


decltype(global_var) global_var;

这种方法的唯一缺点是你必须在定义之前将变量的声明提供给编译器。

当然,它也适用于类的static成员变量。

http://ideone.com/W1WToV处查看它。

答案 1 :(得分:0)

您可以为全局使用全局类型:

using global_var_type =  long;
extern global_var_type global_var;

然后

global_var_type global_var;

如果更改类型,则无需重新编辑(当然,您必须重新编译)