通过将两个值相乘来定义一个字符数组

Define a char array by multiplying two values

本文关键字:定义 一个 数组 字符 两个      更新时间:2023-10-16

我有以下代码,但编译器返回: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