这种初始化工作
int arr[3][4] = { {1,2,3,4}, {1,2,3,4}, {1,2,3,4} } ;
但这里没有
const size_t row_size = 3;
const size_t col_size = 4;
int arr[row_size][col_size] = { {1,2,3,4},{1,2,3,4},{1,2,3,4}};
这些代码在c中但是在将文件扩展名更改为c ++并重新编译之后 它工作正常。为什么这样的行为?
答案 0 :(得分:0)
曾经是C和宏的问题被用来解决这些问题。但是在C ++中,如果使用“const”关键字,那么编译器应该在编译期间自动替换这些值,因此g ++应该没有任何问题。使用g ++编译时,该代码运行完全正常。也许你正在尝试用gcc编译它(我得到了与gcc相同的错误,这是预期的)。
答案 1 :(得分:0)
实际上,拥有const
- 变量并不意味着它在编译时是常量。例如,我可以
void f(int x) {
const int y = x;
int m[y]; // should that work?
}
它不适用于旧的C ++ 03,因为编译器无法在编译时确定y
。虽然很快就可以在C ++中使用名为Variable Length Arrays的功能,但是你想要的只是普通的编译时常量。只是说它也是static
:
static const int size_t row_size = 3;
从现在开始,您可以在编译时使用它。