如何解决如何使用gcc工具链初始化c ++ 11中的全局数组的几个元素?
我有以下代码:
#include <iostream>
int array[10] = {
[2] = 200,[5] = 500
};
int main() {
std::cout << "Hello World!\n";
std::cout << array[5];
return 0;
}
使用g++ -std=c++11 -o main main.cpp
进行编译时,出现以下错误:
main.cpp:6:1: sorry,unimplemented: non-trivial designated initializers not supported
};
^
main.cpp:6:1: sorry,unimplemented: non-trivial designated initializers not supported
有什么方法可以用g ++做到这一点?叮当声很好。
解决方法
这是C的功能,称为指定的初始化程序,在标准C ++中不可用。因此,尽管某些编译器可能允许它作为扩展,但它不是语言的功能(因此无法移植)。
现在,我不知道您的 actual 数组是否会比这更复杂,但是如果没有,您可以使用以下方法做到这一点:
int array[10] = { 0,200,500 };
,
就像其他文章提到的那样,您用于该数组的语法来自C,而不是标准C ++。
但是,如果您要在全局变量中声明一个大数组,并且只想指定一对值,则可以执行以下操作:
int array[500];
int main()
{
array[2] = 200;
array[5] = 500;
}
通过在全局声明数组,它将在编译时完成,因此它将所有成员初始化为0
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。