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 参数才能编译通过。

发布了43 篇原创文章 · 获赞 7 · 访问量 4632

猜你喜欢

转载自blog.csdn.net/qq_46522785/article/details/104998865