【发布时间】:2015-01-01 20:12:37
【问题描述】:
最近遇到复合文字,据我了解,以下是正确的使用方法。幸运的是,它适用于 ubuntu 上的 gcc 和 clang。
int main() {
int *p = (int []) {1, 2};
return 0;
}
但是,我注意到另一种使用复合文字的方式,如下所示。感觉有点奇怪;这只是数组初始值设定项。以下代码使用 clang 编译正常,但使用 gcc 编译失败,array initialized from non-constant array expression。
int main() {
int p[] = (int []) {1, 2};
return 0;
}
这是故意的还是什么?
环境:
- gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
- Ubuntu clang 版本 3.5-1ubuntu1(主干)(基于 LLVM 3.5)
CMD:
- gcc test.c
- clang test.c
【问题讨论】:
-
编译它们的命令行是什么?
-
@jww 已编辑添加用于构建的 cmd。
标签: c gcc clang c99 compound-literals