c语言中数组的初始化花括号是否可以省略,初始化时真的需要花括号吗?

本文探讨了在GCC 4.6.3中,关于std::array和boost::array初始化时出现的‘缺少大括号’警告,分析了警告背后的原因,并质疑在这些特定上下文中的警告是否多余。作者寻求理解是否确实需要额外括号,还是应该忽略警告。
摘要由CSDN通过智能技术生成

根据GCC 4.6.3(Ubuntu / Linaro 4.6.3-1ubuntu5),我在以下代码中的数组初始化中缺少大括号:

#include

#include

#include

int main(){

int plain[] = {1,2,3,4,5};

std::array std_arr = {1,2,3,4,5}; // warning, see below

boost::array boost_arr = {1,2,3,4,5}; // warning, see below

std::cout << plain[0] << std_arr[1] << boost_arr[2] << std::endl;

}

> g++ test.cc -Wall -Wextra -pedantic --std=c++0x

test.cc: in function »int main()«:

test.cc:7:47: warning: curly braces missing around initialization for »std::array::value_type [5] {aka int [5]}« [-Wmissing-braces]

test.cc:8:47: warning: curly braces missing around initialization for »int [5]« [-Wmissing-braces]

显然(GCC missing braces around initializer)这是GCC中的一个错误,即使在稍微不同的背景下也是如此 . 答案从"file a bug report"到"just disable the warning"不等 .

但是,在 std::array 或 boost::array 的背景下,这个警告是多余的,还是我遗漏了一些重要的东西?

(我可能会添加额外的括号,而不是禁用警告,但我很好奇其含义)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值