关于C标准和编译器

博客讨论了C语言中main函数返回类型从void到int的改变,这是由于C99标准的要求。C99规定main函数必须返回int,以便传递退出状态给操作系统。文章提到了不同编译器对C99标准的支持情况,并列举了几种流行的C语言编译器,如GCC、MSC和TurboC。强调了虽然有国际标准,但具体编译器可能有自己的语法规则和扩展。
摘要由CSDN通过智能技术生成

编译运行源代码时出现错误error: ‘::main’ must return ‘int’,将main函数返回类型由void改为int,编译运行成功。通过搜集资料知道,这是由于C标准变化产生的问题。

在世界第一个完整的C语言标准C89/C90中,main()是正确的。但在C99标准中,只有以下两种定义方式是正确的:
int main(void)
int main(int argc,char *argv[])

main函数的返回值类型必须是int,这样返回值才能传递操作系统。如果main函数的最后没有写return语句的话,C99规定编译器要自动在生成的目标文件中加入return 0,表示程序正常退出。

一般情况下,在编译文件时我们不会关注采用的标准,只有当需要使用某个特定标准的特性,或是要规范所有代码时,我们可以给编译器指定C语言标准,限制所采用的标准。C99标准是C语言的第二个官方标准,但是各个公司对C99的支持所表现出来的兴趣不同。GCC和其它一些商业编译器支持C99的大部分特性,微软和Borland却似乎对此不感兴趣。

C语言标准虽然是国际标准化组织制定的,但是具体编译器的实现和标准制定还是有所不同的。比如GNU GCC 编译器就添加了自己的语法规则,还有嵌入式领域的Keil C51编译器(多定义了自己的数据类型);还有基于llvm框架的Clang编译器;还有和Visual Studio2015集成的VC++ Compiler(包含了微软自定义的内联汇编的语法)都有各自的特殊语法规则,但大体来说每个c语言编译器还是实现了标准文档里面的大部分特性。所以如果需要帮助文档,查找所用的编译器的官方文档是最实用的。

最流行的C语言编译器有以下几种:GNU Compiler Collection 或称 GCC;Microsoft C 或称 MS C;Borland Turbo C 或称 Turbo C。

https://bbs.csdn.net/topics/110163189

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值