天天看點

gcc 編譯器的 std=c99 選項gcc tcpclient.c -o tcpclientgcc tcpclient.c -o tcpclient -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 參數才能編譯通過。

繼續閱讀