【问题标题】:What is "near-initialization"?什么是“接近初始化”?
【发布时间】:2014-05-01 19:34:38
【问题描述】:

在 C 中,“接近初始化”错误是什么意思?

例如,以下将产生错误:

int a[9] = {{1,2,3},{2,3,4},{3,4,5}}

p.s 为什么这个例子会产生错误?

【问题讨论】:

  • 您有一个包含 9 个元素的数组,但您将其视为 3x3 数组。即使它们在内存中占用相同数量的空间,您也需要更改数组定义或初始化。此外,这不是错误,可能只是警告。
  • 60 年代的谷歌搜索 "The compiler is giving you one warning. It's a two-line warning; the second line is telling you the location "near" where the warning was encountered."。真的......也可能没有连字符。您误解了编译器错误。 @AntonH 想写一个结合两个 cmets 的正确答案吗?你是第一个解决它=)
  • "near" 是近在咫尺的英文。换句话说,“错误位于初始化程序附近”。是的。
  • @luk32 我的谷歌搜索只用了 50 秒 :)
  • @AntonH 我仍然觉得值得以适当的方式回答,你是第一个 =)。

标签: c


【解决方案1】:

结合我和@luk32 的cmets(编辑:和@hans-passant)。

您的错误与其说是错误,不如说是警告您有潜在问题。它在元素a 附近(如在附近)(“附近”和“初始化”之间没有连字符,因此警告位于警告消息中提到的元素附近;“近初始化”意味着元素几乎但没有完全初始化,这是没有意义的)。

int a[9] = {{1,2,3},{2,3,4},{3,4,5}}

基本上,您有一个大小为 9 的一维数组。但在初始化时,您将它视为一个 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

【讨论】:

  • 谢谢安东。你的权利,我对语法的误解增加了我的困惑。
猜你喜欢
  • 2018-01-27
  • 2011-04-28
  • 2023-03-10
相关资源
最近更新 更多