【发布时间】:2019-09-05 12:25:47
【问题描述】:
有点类似于this post,但仍然不同:我可以在某个头文件中定义一个全局auto 变量吗?我尝试使用以下文件,但无法编译。
$ cat main.cpp
auto a = 5;
#include "defs.h"
int main(int argc, char **argv){ return a; }
$ cat defs.h
#ifndef __DEFS_H__
#define __DEFS_H__
extern auto a;
#endif
在标准编译后(g++ main.cpp -o main)出现以下错误:
In file included from main.cpp:2:0:
defs.h:3:8: error: declaration of ‘auto a’ has no initializer
extern auto a;
^~~~
有没有办法在源文件中定义一个全局自动变量和 将其包含在某些头文件中?还是我必须放弃这个梦想并找到它的类型?
【问题讨论】:
-
#define __DEFS_H__这是一个保留的标识符。通过定义它,您的程序将具有未定义的行为。选择另一个宏。 -
不相关,但诸如
__DEFS_H__之类的名称在 C++(和 C)中是保留的 - 您不应该在自己的代码中创建它们。 -
刚刚注意到您在问题中引用了重复项,声称您的问题不同 - 您的问题有何不同?
-
这是不可能的;每个使用该变量的翻译单元都必须推断出相同的类型,甚至没有任何方法可以验证它们是否做到了。
标签: c++ global-variables header-files auto