通过将两个值相乘来定义一个字符数组
Define a char array by multiplying two values
我有以下代码,但编译器返回:Invalid use of non-static data member 'columns'
,同时定义数组。
int columns = 10;
int rows = 13;
char characters[columns * rows];
如果我把它改成:
#define COLS 10;
#define ROWS 13;
int columns = COLS;
int rows = ROWS;
char characters[COLS * ROWS];
得到Expected member name or ';' after declaration specifiers
。
这只适用于我通过手动输入数字来声明我的数组,像这样:
char characters[10 * 13];
…当然这是多余的;我不想在两个地方定义颜色和行。我的印象是预处理器指令是编译器的简单搜索/替换,所以我不明白为什么char characters[COLS * ROWS]
不起作用,这确实是char characters[10 * 13]
处理这个问题的正确方法是什么?
PS:我正在使用Xcode 5.1.1与OpenFrameworks项目。
如果您将;
附加到宏中,则在展开中也会得到;
。
,
#define COLS 10;
#define ROWS 13;
char characters[COLS*ROWS];
扩大到
char characters[10;*13;];
无法编译。去掉分号,就可以开始了。
#define COLS 10
#define ROWS 13
数组尺寸必须为常量表达式:
const int columns = 10;
const int rows = 13;
char characters[columns * rows];
注意const
的使用。
#define
不工作,因为额外的;
#define COLS 10;
应为
#define COLS 10
相关文章:
- 用C++中的一个变量定义一个常量
- 在类定义之后定义一个私有方法
- 如何定义一个纯抽象基类
- 为什么我不能在主函数之外定义一个类的对象(它继承了另一个类)?
- 如何定义一个没有重复代码的继承的 const 类成员函数?
- 如何在 c++ 中定义一个将被另一个短语替换的短语?
- 是否可以定义一个以向量<T>作为值的unordered_map?
- 我可以定义一个 constexpr 匿名/未命名变量吗?
- 定义一个 void f(void) 函数,但使用来自同一范围的变量?
- 如何在一个函数中定义一个变量,并在另一个函数中访问和更改它?(C++)
- 为什么不建议使用宏符号常量定义一个固定长度的数组呢
- 在C++中,我想通过使用来自变量(例如字符串)的typename信息,从模板中定义一个类对象
- 为什么我必须显式定义一个由固有类提供的方法
- 定义一个带有缓冲区的函数作为卤化物中的边界框参数
- Visual Studio 2017 C++,如何定义一个"环境变量"'Additional Library Directory'?
- 如何键入定义一个专门的 std::set 模板,使用特定的比较函数实例化
- 仅使用 bool 和 char 定义一个 templete 类
- 定义一个工厂函数,该函数返回指向在此工厂函数中创建的函数的指针
- 是否可以定义一个非模板函数,该函数可以将模板化对象作为参数
- 如何在C 中定义一个副操作员