我正在做一个练习,在这个练习中,我必须证明C和C++常量表达式之间的区别.用C++编写类似这样的代码是有效的:
const int size_1 = 2;
const int size_2 = 2;
const int arr[size_1 + size_2] = { 1, 2, 3, 4 };
int main() {
return arr[0];
}
但我预计,当复制到.c文件并用C编译时,它会抛出错误-事实上,我已经使用在线编译器判断过它,它返回:
main.c:6:11: error: variably modified ‘arr’ at file scope
我相信这就是我要找的.
但是,当我用机器上的命令gcc main.c
编译完全相同的代码时,代码编译时没有错误,并且返回值是正确的.有人能解释一下我的错误在哪里吗?
我的编译器版本:
Apple clang version 15.0.0 (clang-1500.0.40.1)
Target: arm64-apple-darwin23.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin