【发布时间】:2012-11-26 10:28:25
【问题描述】:
我以前用过 C(嵌入的东西),我可以像这样初始化我的数组:
int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };
即我可以在初始化程序中指定索引。
目前我正在学习Qt/C++,我不敢相信这在 C++ 中不受支持。
我有这个选项:-std=gnu++0x,但无论如何它不受支持。 (我不知道 C++11 是否支持它,因为 Qt 与 gcc 4.7.x 一起工作有问题)
那么,C++ 真的不支持吗?或者也许有办法启用它?
UPD:目前我想初始化 const 数组,所以 std::fill 不起作用。
【问题讨论】:
-
"或者也许有办法启用它?" - 使用 C? (:D) 好问题,+1。
-
你的代码既不是C(包括C11)。 C11 不支持以这种方式初始化范围 (
[a...b]=1),仅支持单个元素 ([a]=1)。 -
hmm...你能在声明周围使用
extern "C" { ................ }吗?但我相信这个语法是你嵌入式编译器的补充。 -
@anishsane “我相信这个语法是你的嵌入式编译器的补充”——不,它是 C99 的 GNU 扩展。
-
@ybungalobill 同样,这是一个 GNU 扩展。