C ++:如何在不定义的情况下声明非函数?

时间:2017-08-08 04:01:31

标签: c++

是否可以在不定义的情况下声明类似整数的东西?

在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.

1 个答案:

答案 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;