我今天遇到了一些代码,这些代码使用的语法在我多年的C编程中是我从未见过的。
MWE:
#include<stdio.h>
char *example_array[] = {
[0 ... 5] = "hello world",
[6 ... 10] = "goodbye world"
};
int main(void) {
printf("%s, %s.\n", example_array[3], example_array[7]);
return 0;
}
预期产量:
hello world, goodbye world.
很清楚静态上下文中发生了什么,但我很好奇这是否可以用作非静态快捷方式中的方便快捷方式,例如循环中的赋值。当然,它不会给任何性能提升 -funroll-loops
不能,但它可能会使矩阵行分配或其他方面的代码更清晰。
clang
和 gcc
默认情况下,在使用此语法时不会发出警告,但我从未在任何地方看到过它。这是某种扩展,还是标准的C语法?