博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C专家编程》一1.7 编译限制
阅读量:5804 次
发布时间:2019-06-18

本文共 697 字,大约阅读时间需要 2 分钟。

本节书摘来自异步社区《C专家编程》一书中的第1章,第1.7节,作者 【美】Perter Van Der Linde,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.7 编译限制

事实上,ANSI C标准对一个能够成功编译的程序的最小长度作了限制,这是在标准第5.2.4.1节规定的。绝大多数语言都有类似的规定,如一个数据名称(dataname)最多可以有多少个字符,一个多维数组的维数最多能够达到多少。但对语言的某种特性的最小值作出规定,如果不是独此一家,至少也是非比寻常的。标准委员会的成员们评论说这是为了指导编译器选择程序最小能够接受的长度。

每一个ANSI C编译器必须能够支持:

在函数定义中形参数量的上限至少可以达到31个。

在函数调用时实参数量的上限至少可以达到31个。

在一条源代码行里至少可以有509个字符。

在表达式中至少可以支持32层嵌套的括号。

long int的最大值不得小于2 147 483 647(就是说,long型整数不得低于32位)等等。进而,一个遵循标准的编译器必须能够编译并执行一个满足上面这些限制的程序。令人惊异的是,上面这些“必须”的限制实际上并不是约束条件,所以当编译器发现违反上述规定的情况时并不一定产生错误信息。

编译器限制通常是一个“编译器质量”的话题。在ANSI C标准中包含它们就是默认如果所有的编译器都设置一些容量上的限制,就会更加有利于代码的移植。当然,一个真正优秀的编译器不应该有预设的限制,而应该只受一些外部因素的限制,如可用的内存或硬盘空间等。这可以通过使用链表或必要时动态扩展表的大小(这个技巧将在第10章解释)来实现。

转载地址:http://dhrfx.baihongyu.com/

你可能感兴趣的文章
spring项目启动错误——java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext...
查看>>
iOS开发网络篇—GET请求和POST请求
查看>>
字典dict
查看>>
游戏名词解释
查看>>
mongodb数据的导出和导入
查看>>
白话算法(7) 生成全排列的几种思路(二) 康托展开
查看>>
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
Valid Parentheses
查看>>
【ES6】数值的扩展
查看>>
性能测试之稳定性测试
查看>>
ES6的 Iterator 遍历器
查看>>
2019届高二(下)半期考试题(文科)
查看>>
【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)
查看>>
nginx 301跳转到带www域名方法rewrite(转)
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
network
查看>>
SettingsNotePad++
查看>>