c語言: 錯誤:只允許在 C99 模式下使用‘for’循環初始化聲明 用gcc編譯出現


在gcc編譯中如果使用

for(int i=0;i<n;++i){}會提示錯誤

錯誤:只允許在 C99 模式下使用‘for’循環初始化聲明 用gcc編譯出現

就是說你的你的c編譯器不是c99標准

 

 

這是編譯器自身的問題了  你可以換編譯器
for(int i=0;i<100;i++)
與
int i;
for(i=0;i<100;i++)
就 i 作用域這一丁點小差別   換一種寫法而已  這不是重點
重點是思維  數據結構  
學程序沒必要在c99這種小節上花功夫
當然也有解決方法,如下

   錯誤處理:

 
        

C99 允許在for語句的 “表達式1 ”中定義並初始變量, gcc4 編譯c語言的默認標准是C89, 編譯C99程序需加參數 “–-std=c99” ;使用

gcc Program12.1.c -o Program12.1 --std=c99就解決了。



下面了解一下

1) 最初的 ANSI C 標准 (X3.159-1989) 在 1989 年被批准,並於 1990 年發布。稍后這個標准被接受為 ISO 標准 (ISO/IEC 9899:1990) 。雖然 ISO 標准將 ANSI 標准的某些章節重新編號並變為條款,但是兩者實際上並無區別。不論是 ANSI 標准還是 ISO 標准,通常都稱之為 C89 ,偶爾也因為發布日期而被叫做 C90 。 ANSI 標准 ( 非 ISO 標准 ) 同時附帶了 rationale 文檔。可以使用 -ansi , -std=c89 或 -std=iso9899:1990 選項指定 GCC 使用 C89 標准;可以使用 -pedantic 選項來得到所有的診斷信息( 或者使用 -pedantic-errors 選項以使 wangning 變為 error) 。PS:pedantic adj. 1. 賣弄學問的 2. 學究式的,迂腐的

2) 新的 ISO C 標准是 1999 年發布的 ISO/IEC 9899:1999 ,通常稱之為 C99 。 GCC 目前不完整的支持這個版本。詳情請參考 http://gcc.gnu.org/gcc-4.4/c99status.html 。為了指定 GCC 使用這個版本的 C 標准,需要 -std=c99 或 -std=iso9899:1999 選項。

3) 默認情況下, GCC 提供了一些 C 語言的擴展,極少的幾處會與 C 標准沖突。關於這些沖突請參考 “ C 語言家族的擴展 ” 一節。使用上述的 -std 選項將會關閉這些有沖突的擴展。你也可以顯式的使用選項 -std=gnu89 ( 對應 C89 的 GNU 擴展 ) 或 -std=gnu99 ( 對應 C99 的 GNU 擴展 ) 來選擇對應版本的擴展功能。如果沒有給出 C 語言 “ 方言 ” 選項,將默認的使用 -std=gnu89 ;若要使用C99的特性要設置-std=gnu9x。






 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM