我有以下代码,但编译器返回: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项目.
如果你附加;到宏,你也可以;在扩展中得到它.
那是,
#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)
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |