簡體   English   中英

由於數組,ISO C90禁止混合聲明和代碼。 我該如何解決?

[英]ISO C90 forbids mixed declarations and code because of arrays. How do I fix this?

我嘗試使用-gcc編譯,並且按預期工作,但是與-pedantic一起添加時,它將無法編譯。 我仍然是編程方面的初學者,這是我第一次遇到此問題,因此對我來說是一個很大的問題。

這是導致錯誤的代碼:

char *exercise[5]={"swimming", "running", "brisk walking", "weight lifting", "zumba"};

如果您能解釋解決方案而不是固定代碼,因為我想學習,我將不勝感激。

這與數組無關。 標准化C語言(ISO C90)的原始版本禁止混合聲明和代碼。

在C90中,每個用{}包圍的局部塊具有相當嚴格的結構:它以聲明(如果有的話)開頭,然后是語句(代碼)。

那是您必須遵循的格式。 將數組聲明移動到塊的頂部。 這應該很簡單,因為初始化器都不依賴於任何運行時計算。 這里的所有都是它的。

{
  /* Declarations go here */
  char *exercise[5]={"swimming", "running", "brisk walking", "weight lifting", "zumba"};

  /* Statements (i.e. code) goes here */
}

當然,這里不為人知的問題是:您真的必須使用C90嗎? 您是否明確要求為C90編譯器編寫代碼? 也許您應該只將編譯器切換到C99模式,而忘記此C90特定的限制?

在較新版本的C語言(C99和更高版本)中,您可以自由地混合使用語句和聲明。 通過在命令行中指定-std=c99 ,可以將GCC切換到C99模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM