通过乘以两个值来定义char数组

Jul*_*ian -1 c++ arrays char

我有以下代码,但编译器返回:Invalid use of non-static data member 'columns'定义数组时.

int columns = 10;
int rows = 13;
char characters[columns * rows];
Run Code Online (Sandbox Code Playgroud)

如果我将其更改为:

#define COLS 10;
#define ROWS 13;
int columns = COLS;
int rows = ROWS;
char characters[COLS * ROWS];
Run Code Online (Sandbox Code Playgroud)

我得到Expected member name or ';' after declaration specifiers.

这只有在我通过手动输入数字来声明我的数组时才有效:

char characters[10 * 13];
Run Code Online (Sandbox Code Playgroud)

......但当然这是多余的; 我不想在两个地方定义我的cols和行.我的印象是预处理器指令是编译器的简单搜索/替换,所以我不明白为什么char characters[COLS * ROWS]不起作用,这样做char characters[10 * 13]

处理这个问题的正确方法是什么?

PS:我正在使用Xcode 5.1.1和一个OpenFrameworks项目.

jla*_*ahd 5

如果你附加;到宏,你也可以;在扩展中得到它.

那是,

#define COLS 10;
#define ROWS 13;
char characters[COLS*ROWS];
Run Code Online (Sandbox Code Playgroud)

扩展到

char characters[10;*13;];
Run Code Online (Sandbox Code Playgroud)

哪个不会编译.丢弃分号,你很高兴.

#define COLS 10
#define ROWS 13
Run Code Online (Sandbox Code Playgroud)