在C中,“近初始化”错误是什么意思?
例如,以下内容将生成错误:
int a[9] = {{1,2,3},{2,3,4},{3,4,5}}
p.s为什么这个例子会产生错误?
答案 0 :(得分:8)
结合我和@ luk32的评论(编辑:和@ hans-passant)。
您的错误不是错误,因为它警告您存在潜在问题。它接近(如在...附近)元素a
(在“near”和“initialization”之间没有连字符,因此警告靠近警告消息中提到的元素;“近初始化”意味着该元素几乎已经完全初始化,这没有任何意义。)
int a[9] = {{1,2,3},{2,3,4},{3,4,5}}
基本上,你有一个大小为9的1D数组。但是在你的初始化中,你将它视为2D 3x3阵列。虽然它们在内存中占用相同的空间,但它们的处理方式略有不同。
要解决此问题,您必须更改定义:
int a[3][3] = {{1,2,3},{2,3,4},{3,4,5}}
或初始化:
int a[9] = {1,2,3,2,3,4,3,4,5}
信息链接:
由@ luk32提供:http://www.microchip.com/forums/m463491.aspx