编译器C89和C99的区别(关于C语言的变量定义的位置问题)

33 篇文章 1 订阅
订阅专栏
文章讨论了C89和C99在声明局部变量方面的不同规定,C89要求在块的开头声明,而C99允许在块内的任何位置声明。当使用C89标准时,如果在执行语句后声明变量会导致编译错误。解决方法是切换到C99模式,这将消除该错误。
摘要由CSDN通过智能技术生成

编译器问题——C89和C99

C89规定,在任何执行语句之前,在块的开头声明所有局部变量。

在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。

1 出现如下问题

报错说 #286 declaration may not apeear after excutable statement in block
在块中,声明不可以出现在可执行语句的后面。
在这里插入图片描述

2 解决方式

点击勾选C99 Mode,然后编译就不报错了。
在这里插入图片描述

c语言编译器不支持c99,Visual Studio2013的C语言编译器C99标准的支持情况
weixin_42164931的博客
05-19 2174
Visual Studio2013终于开始比较良好地支持C99特性了。在此之前,如果用C语言写代码的话,变量名都需要放到函数体的前面部分,代码写起来十分别扭。而Visual Studio2013中的C编译器已经支持了不少C99标准,让我来为大家盘点一下。现在仍然不支持的语法特性有:1、inline关键字:在VC中,仍然需要用微软自己定义的__inline,而尚不支持inline,尽管inline在...
第三章 变量和数据类型_C语言变量定义位置以及初始值
qq_43205256的博客
02-18 2293
在函数外部定义变量叫做全局变量(Global Variable),在函数内部定义变量叫做局部变量(Local Variable),它们的区别将会在《C语言函数》一章中详细说明,这里大家只要记住,变量也可以在 main 函数外面定义即可,本节我们重点讲解的是局部变量。 局部变量定义位置 为了让编译器方便给变量分配内存,C89 标准规定,所有的局部变量(函数内部的变量)都必须定义在函数的开头位置,在定义完所有变量之前不能有其它的表达式。 这种规定太过死板,虽然变量定义在函数开头,但是使用变量可能在函数
C99编译器
05-18
在WINDOWS下直持C99编译器
C语言变量定义位置C89C99区别
热门推荐
君临天下的博客
11-06 1万+
C语言变量定义位置C89C99区别)          在C++和JAVA中,按照语法,我们可以把变量定义在任何位置,所以很多人习惯了“哪里使用哪里定义”的这种做法,所以当用C语言进行编程的时候,很多人依然想这样去做。当然,对于变量定义位置C89C99是有一定的差别的,也就是和大家使用的编译器有关。     如果大家使用较老的编译器时遇到下面的代码可能会提示错误,因为
怎样查看自己编译器的编译版本是C99还是其他
最新发布
专注音频,高效工作,快乐生活!
07-26 865
一般来说,现代编译器都支持 C99 标准,特别是 GCC 和 Clang。如果你在编译时遇到问题,可以查看编译器的文档,或使用相关的编译选项来指定 C 标准。
采用C99标准的编译器
01-12
第1个采用C99标准的免费编译器(Visual C++6.0也未采用C99准标啊),软件小巧实用,但自动缩进功能没VC++做得好。 
cld:符合C99编译器
02-17
cld-C99编译器 cld是使用C ++编写的完全兼容C99(少有错误)的编译器。 前端是从头开始编写的,并且LLVM当前用作代码生成的后端。 命令行界面旨在匹配GCC之一,但目前仍在工作。 当前支持的代码生成目标是Windows和Linux上的x64(尽管ABI明智的做法是其他x64操作系统也可以工作)。 编译器的源代码旨在用作库。 编译器的每个阶段都干净地彼此分开,但建立在上一个阶段之上。 例如,检查C源代码是否有效并向stderr发出错误很简单: bool errors = false ; auto pptokens = cld::Lexer::tokenize(std::move(input),options,& llvm::errs (),&errors); if (errors) { return - 1 ; } pptokens = cld::PP:
cpp-Gosubc一个采用Go编写的C89编译器
08-15
Gosubc:一个采用Go编写的C89编译器
(0积分)C语言标准(c89,c99,c11,c17,c2x)
04-04
从最早的C89到最新的C2x,这些标准不仅定义了语言的语法和语义,还引入了新的特性,增强了C语言的功能性和安全性。以下是关于C语言各版本标准的详细概述: 1. **C89(也称为C90)**:这是C语言的第一个正式国际标准...
C语言规范标准-C99(中文版)
09-06
C99标准在1999年发布,相较于之前的C89(也称为C90)标准,它引入了许多新的特性,增强了语言的灵活性和功能。 1. **范围** - C99标准规定了C语言程序的语法、类型系统、运算符、控制流、预处理器、内存管理、输入...
单片机与DSP中的ADS下C语言中局部变量的存储位置分配
11-18
总的来说,C语言中局部变量的存储位置是由编译器根据优化策略和硬件资源决定的,这可能与教科书中的简单模型有所出入。开发者在编写代码时,了解这些细节有助于优化程序性能,并更好地理解编译器生成的机器代码。
Linux gcc编译器默认C99标准编译
POSEidoNqs的博客
02-29 2019
可以在bash配置文件(如.bashrc或.bash_profile)中设置一个别名来简化编译命令。第四步、需要重新加载该文件令该文件生效。之后再使用gcc命令进行编译时就是默认c99标准了。可以使用如下代码查询你的gcc编译器默认标准。如果没查到,则默认支持的是 C89 标准。,则默认支持的是 C99 标准;,则默认支持的是 C11 标准;,则默认支持的是 C17 标准;因为gcc默认c89版本编译。第二步、在文件中添加别名。第一步、打开配置文件。
c99在不同编译器的实现情况
A Flying Bird
01-10 1040
c99中引入了一些新特性,比如bool类型、C++风格的单行注释,等等。我们在较新的Linux平台上的C代码中经常可以看到这种应用。但在VS2005、VS2008等Windows的C编译器中,发现并不支持。
c89, c99,c++编译器选项小记
08-13 693
-+,   指定源文件是c++文件。-C,  指定编译器在预编译时保留注释,缺省时注释在预编译时会被删去。-c,  编译产生目标文件*.o。-D name[=value]-U name              定义或取消定义宏。缺省值为1。-E     只完成预编译并stdout输出。-e function,   指定程序启动入口地址。-g,    指定编译器在生
求一个C++或Java或者C#写的支持C89编译器前端,如何解析C语言的声明?
zerokkqq的专栏
02-06 261
作者:RednaxelaFX 链接:https://www.zhihu.com/question/36003776/answer/65878968 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 最重口味的是要不要自己实现C的预处理器/宏语言; 是否支持typedef会影响到scanner/parser的结构,支持会比不支持麻烦不少;一旦C的de
C89:论符号
weixin_30484247的博客
07-01 167
一.简介 C运算符总共有13种: 1.算术运算符:* - + /2.关系运算符:> < == != >= <=3.逻辑运算符:! && ||4.位运算符:<< >> ~ | ^ &5.赋值运算符:= 及扩展赋值运算符6.条件运算符:?:(C语言中唯一的三目/三元运算符)7.逗号运算符:,8.指针运算符:* &...
ANSI C 与 C99 定义变量区别
weixin_49826519的博客
09-25 454
ANSI C 与 C99 定义变量区别在于:C99中可在任意地方定义变量,而传统的ANSI C 只能在代码开头的地方定义变量
C语言C99标准详解与支持编译器
"C语言C99标准是ISO/IEC 9899:1999的简称,是C语言的一个重要版本更新,相对于之前的C89标准有所增强。C99C89的基础上增加了新的基本数据类型、关键字,并引入了一些系统函数,同时也对大字符集进行了优化,增加了...
写文章

热门文章

  • Premature end of file 错误解决 33256
  • JSON与JAVA数据的转换。JSONObject.fromObject()和JSONObject.toBean() 23469
  • FileInputStream读取字节流。读取文件数据的两种方式(写的好) 21740
  • bandgap的理解(内部带隙电压基准) 19416
  • get(0)是获取集合中的第一个元素 19365

分类专栏

  • typora 1篇
  • STM32 14篇
  • 嵌入式 5篇
  • 公司
  • 感性
  • pclint
  • C/C++语言 33篇
  • 数据结构 1篇
  • linux 7篇
  • other 7篇
  • Python 1篇

最新评论

  • C与C++的区别;面向过程与面向对象的区别;

    qazwsx2_: 通俗易懂

  • 出现 SEGMENT: ?C_INITSEG 的原因:记住定义的时候不可以初始化

    blue0751: 也就是说声明和赋值语句不能同时进行!但经过实验发现,局部变量声明的同时初始化是没问题的,只有全局变量并且在其他文件extern声明了的情况下,同时赋值就会警告

  • Vscode 用户区的settings.json文件

    あき墁: 复制过去“true”那里报错了怎么办

  • setLayout()和GridData的设置

    毂梁微: 请教一下, 您是按像素大小定义组件所占宽度,一行一共多少像素?组件所占的宽度可以用比例表示吗?

  • 取一个整数各偶数位上的数构成一个新的数字

    2301_81682304: 你这是错的啊表情包

大家在看

  • git的安装以及入门使用 819
  • PCL点云库 概览 949
  • 逐行讲解大模型生成解码超参数源码(temperature、top-k、top-p等)

最新文章

  • # 5 typora图片居中
  • 取一个整数各偶数位上的数构成一个新的数字
  • strlen是碰到第一个字符串结束符‘\0‘就结束,所以长度不包括‘\0‘。定义数组时会默认在字符串后面添加一个‘\0‘
2024年1篇
2023年10篇
2022年1篇
2021年2篇
2020年11篇
2019年38篇
2018年157篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家顺河玻璃钢雕塑定制福建步行街玻璃钢雕塑订做价格昆明玻璃钢雕塑厂家直供许昌玻璃钢景观雕塑制造仿玉玻璃钢雕塑价格潮州玻璃钢商场美陈浙江抽象玻璃钢雕塑方法宁德玻璃钢伟人像雕塑昌吉玻璃钢雕塑造型贴金宣城商场开业美陈商场实物美陈金华玻璃钢雕塑定制江苏开业商场美陈价钱重庆珠海玻璃钢雕塑玻璃钢不锈钢花盆淮北玻璃钢雕塑供应商山西玻璃钢美陈雕塑青岛玻璃钢马雕塑信阳专业玻璃钢仿铜雕塑玻璃钢雕塑漆视频教程十堰户外玻璃钢雕塑哪家好榆林玻璃钢雕塑厂家价格巢湖玻璃钢长颈鹿雕塑南京特色玻璃钢雕塑摆件植物玻璃钢雕塑工厂北京玻璃钢雕塑信赖华艺浙江永康广场玻璃钢雕塑大红色玻璃钢人物雕塑怎么固定闵行区玻璃钢雕塑厂家迪斯尼玻璃钢雕塑卡通人物香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化