namespace myspace { int x } 现在为什么 `myspace::x=3;` 给出错误?

Abh*_*ane 3 c++ namespaces

代码

#include <iostream>
namespace myspace
{
    int x;
}

myspace::x=3; // This line is giving error.
int main()
{
    myspace::x=5;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出

Error: C++ requires a type specifier for all declarations
Run Code Online (Sandbox Code Playgroud)

那么为什么会出现myspace::x=3;C++ 要求所有声明都有类型说明符的错误呢?

Som*_*ude 8

该声明

myspace::x=3;
Run Code Online (Sandbox Code Playgroud)

不是初始化,而是简单的赋值。这与

myspace::x=5;
Run Code Online (Sandbox Code Playgroud)

你在main函数内部。

任何不是声明或定义的语句都不能位于函数外部。

如果要初始化变量,请在定义处进行:

namespace myspace
{
    int x = 3;
}
Run Code Online (Sandbox Code Playgroud)

  • 或 https://godbolt.org/z/PYrjera5T (4认同)