C++ #定义数组索引无效

C++ #定义数组索引无效,c++,arrays,macros,C++,Arrays,Macros,我试图在头文件的顶部定义一个常量,并将该值用作数组的索引大小。我得到以下错误: 错误C2059:语法错误:']' 我很好奇为什么 #define MAX_TEAMS = 20; class Program { public: int atk_val[MAX_TEAMS]; // Error! int atk_val[20]; // Works! } 替换#定义最大团队=20带有 #define MAX_TEAMS 20 当前形式的代码intatk_val[MAX_TEAMS]

我试图在头文件的顶部定义一个常量,并将该值用作数组的索引大小。我得到以下错误:

错误C2059:语法错误:']'

我很好奇为什么

#define MAX_TEAMS = 20;

class Program
{
  public:

  int atk_val[MAX_TEAMS]; // Error!
  int atk_val[20]; // Works!
}
替换
#定义最大团队=20带有

#define MAX_TEAMS 20
当前形式的代码
intatk_val[MAX_TEAMS]将扩展为

int atk_val[= 20;];
//          ^   ^
因此,您会看到错误消息

始终记住,宏不是变量。

替换
\define MAX\u TEAMS=20带有

#define MAX_TEAMS 20
当前形式的代码
intatk_val[MAX_TEAMS]将扩展为

int atk_val[= 20;];
//          ^   ^
因此,您会看到错误消息


请始终记住,宏不是变量。

以这种方式定义符号时:

#define MAX_TEAMS = 20;

定义要替换为
=20的
MAX\u团队

以这种方式定义符号时:

#define MAX_TEAMS = 20;
定义要替换为
=20的
MAX\u团队

更改

 #define MAX_TEAMS = 20;

#define
执行字符串替换。

更改

 #define MAX_TEAMS = 20;


#define
执行字符串替换。

静态常量int MAX\u TEAMS=20
而不是
#define
请注意,正如Captiain Obvlious所指出的,您最好使用
静态常量
,或者更好地使用标准容器而不是普通数组,顺便说一句,您定义的是数组的大小,而不是它的索引。(是的,有时我喜欢理发)。如果您的程序没有bug,则索引永远不会达到此值;)<代码>静态常量int MAX_团队=20
而不是
#define
请注意,正如Captiain Obvlious所指出的,您最好使用
静态常量
,或者更好地使用标准容器而不是普通数组,顺便说一句,您定义的是数组的大小,而不是它的索引。(是的,有时我喜欢理发)。如果您的程序没有bug,则索引永远不会达到此值;)请看上面的注释——这是在C++世界中更好的解决方法。请看上面的注释——这是在C++世界中更好的解决方案。