指定初始化器(C99)C++不支持

C99增加了一个新特性,可以使用方括号指明需要特别初始化的元素,在初始化一个元素之后,未初始化的元素一般都为零。

#include<stdio.h>
int main()
{
     int arr[6] = {[5] = 12};//特别指定a[5] = 12;
     for(int i = 0;i <6; i++)
        printf("%d ",arr[i]);

}

在C语言中,该程序可以正常执行,输出:

[Running] cd "d:\程序\随笔程序\2020年1月\" && gcc zhiding初始化器.c -o zhiding初始化器 && "d:\程序\随笔程序\2020年1月\"zhiding初始化器
0 0 0 0 0 12 
[Done] exited with code=0 in 0.93 seconds

但是C++中不支持这样的语法,第一次发现有C++不支持的C语法。

#include<iostream>
using namespace std;
int main()
{
    int arr[6] = {[5] = 12};
    for(int i = 0;i <6; i++)
        cout << arr[i] << " ";
}

报错:

 cd "d:\程序\随笔程序\2020年1月\" && g++ designatedinitializer.cpp -o designatedinitializer && "d:\程序\随笔程序\2020年1月\"designatedinitializer
designatedinitializer.cpp: In function 'int main()':
designatedinitializer.cpp:5:27: sorry, unimplemented: non-trivial designated initializers not supported
     int arr[6] = {[5] = 12};
                           ^

[Done] exited with code=1 in 0.738 seconds
发布了267 篇原创文章 · 获赞 38 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/dghcs18/article/details/104078499