Visual C ++变量声明

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

标签: c++ windows-10-mobile

在命名空间括号内的MainApp.XAML.h文件中,我有:

String jo=userGson.toJson(u);

当我编译代码时,我得到了一些错误:

int food;
food = 0;

Error C4430 missing type specifier - int assumed

但是当我谷歌如何声明变量时,它显示的方式和我一样。

我错过了什么吗?

- 编辑 -

因此,如果我需要将我的变量放在我的.cpp文件中,那么.cpp文件中的内容是否可以放入?

目前我在这里:

Error C2086 'int MonsterFights::food': redefinition

1 个答案:

答案 0 :(得分:4)

这里有两个问题:

  1. 首先,您在头文件中有一个变量 definition 。这意味着变量将在每个translation unit(大致是包含所有包含头文件的源文件)中定义,其中包含头文件。

    每个变量只能有一个单一的定义,并且只能在头文件中包含声明。将定义移动到单个源文件,并在头文件中添加声明:

    extern int food;
    
  2. 第二个问题是,您不能在全局范围或命名空间范围内使用一般语句,只能声明和定义。

    您可以通过将定义(源文件中的定义)更改为初始化变量来解决此问题:

    int food = 0;
    

    请注意,全局变量并不真正需要这种初始化。编译器将确保其他未初始化的全局变量适合初始化为"零",对于int变量,它们将变为0