gcc 編譯器的 std=c99 選項

最近在學習關於 Linux 下的網絡編程相關的知識,以前對這方面沒有什麼瞭解。跟着教程寫完了代碼,然後使用 gcc 進行代碼編譯,然後編譯報錯了。

gcc tcpclient.c -o tcpclient

.c:10:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
for (int i = 0; i < MESSAGE_SIZE; i ++)
^
tcpclient.c:10:5: note: use option -std=c99 or -std=gnu99 to compile your code
關鍵的報錯位置就時這一處,然後根據提示增加了相關的參數 -std=c99,然後編譯通過了。

gcc tcpclient.c -o tcpclient -std=c99

然後就編譯通過了,然後繼續嘗試了 -std=gun99 的參數,也編譯通過了。

後來瞭解到,gcc 默認使用的是 C89 的標準,而 C89 的標準不支持在 for 中定義循環變量,而在 for 循環中需要定義循環變量的話,需要在 C99 標準中才支持,因此需要增加 -std=c99 或 -std=gun99 參數才能編譯通過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章