struct中的数组声明,使用C ++中的预定义常量

时间:2016-11-29 15:28:50

标签: c++ arrays struct constants

我想用预定义的常量结构中声明一个数组,但是它给了我这个错误:期望a']'

#define MAX_SZAMJEGY 200;

struct szam {

    int szj[MAX_SZAMJEGY];
    bool negative;
};

3 个答案:

答案 0 :(得分:5)

宏扩展为

int szj[200;]; 

这是无效的C ++代码。

删除;来自#define MAX_SZAMJEGY 200;

答案 1 :(得分:4)

首选的C ++解决方案是使用常量而不是宏。这样你就不会出现分号问题,并且还带来了许多其他好处。方法如下:

(C ++ 98):

static const size_t MAX_SZAMJEGY 200;

struct szam {

    int szj[MAX_SZAMJEGY];
    bool negative;
};

(C ++ 11)

static constexpr size_t MAX_SZAMJEGY=200;

struct szam {

    int szj[MAX_SZAMJEGY];
    bool negative;
};

当你使用它时,如果你正在使用C ++ 11,你也可以用C ++ std::array替换C风格的数组。虽然它没有太大差别,但使用起来会稍微方便一些。

答案 2 :(得分:2)

#define MAX_SZAMJEGY 200

而不是

#define MAX_SZAMJEGY 200;

(分号进入宏)