是否可以在不定义的情况下声明类似整数的东西?
在C ++中,可以分离函数的定义和声明。
// foo.cpp
int foo(int);
int foo(int a) {
return 45;
}
但是,如果没有功能,它似乎不是
// bar.cpp
int bar;
int bar = 10;
bar.cpp
生成此</ p>
$ clang++ -c bar.cpp
bar.cpp:2:5: error: redefinition of 'a'
int a = 10;
^
bar.cpp:1:5: note: previous definition is here
int a;
^
1 error generated.
在第二个语句中省略类型注释会产生不同的错误。
// bar2.cpp
int bar;
bar = 10;
产生
$ clang++ -c bar2.cpp
bar2.cpp:3:1: error: C++ requires a type specifier for all declarations
bar = 10;
^
1 error generated.
答案 0 :(得分:7)
extern int bar; // declares, but does not define bar
int bar = 10; // defines bar
请注意,这需要bar
具有静态存储持续时间。这是一个示例用法。
#include <iostream>
int main()
{
extern int bar;
std::cout << bar; // this should print 10
}
int bar = 10;