gcc 编译器的 std=c99 选项

本文讲述了在Linux下使用GCC编译网络编程代码时遇到的错误,特别是关于在for循环中声明变量的问题。由于GCC默认使用C89标准,不支持此特性,需通过添加-std=c99或-std=gnu99参数来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习关于 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 参数才能编译通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值