繁体   English   中英

C [x ... y]范围分配

[英]C [x … y] ranged assignment

我今天遇到了一些代码,这些代码使用了我多年来从未见过的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不能提供任何性能提升,但它可能会使代码更清晰,比如矩阵行分配或其他方式。

使用这种语法时, clanggcc默认不提供任何警告,但我从未在任何地方看到过它。 这是某种扩展,还是标准的C语法?

这是gcc和clang支持的指定初始值设定项的GNU扩展,您可以在gcc文档中阅读。 请注意,这仅适用于初始化程序,而不适用于赋值,这是非常不同的事情,尽管两者都使用=符号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM