【问题标题】:Array declaration inside struct using predefined constant in C++使用 C++ 中的预定义常量在 struct 中声明数组
【发布时间】:2016-11-29 15:28:50
【问题描述】:

我想在 结构 中声明一个具有预定义常量大小 的数组,但它给了我这个错误:expected a ']'.

#define MAX_SZAMJEGY 200;

struct szam {

    int szj[MAX_SZAMJEGY];
    bool negative;
};

【问题讨论】:

  • 删除;从定义
  • 或者更好的是,将定义替换为constexpr std::size_t MAX_SZAMJEGY = 200;

标签: c++ arrays struct constants


【解决方案1】:

宏扩展为

int szj[200;]; 

这不是有效的 C++ 代码。

删除;来自#define MAX_SZAMJEGY 200;

【讨论】:

    【解决方案2】:

    首选的 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 样式数组替换为 C++ std::array。虽然差别不大,但使用起来稍微方便一些。

    【讨论】:

      【解决方案3】:

      试试

      #define MAX_SZAMJEGY 200
      

      而不是

      #define MAX_SZAMJEGY 200;
      

      (分号进入宏)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-03
        相关资源
        最近更新 更多