当前位置:网站首页>C陷阱与缺陷 第7章 可移植性缺陷 7.1 应对C语言标准变更
C陷阱与缺陷 第7章 可移植性缺陷 7.1 应对C语言标准变更
2022-07-30 17:10:00 【weixin_客子光阴】
可移植性缺陷
使用C语言的一个首要原因就是,C程序能够方便在不同的编程环境中移植。
ANSI C标准的发布能够在一定程度上解决问题,但并不是万应灵药。
可移植性是一个涵盖范围非常广泛的主题
Mark Horton在它的著作How to Write Portable Software in C中详细地讨论了这个主题。
应对C语言标准变更
ANSI C标注允许这样写,但在老的机器上不能运行。
double square(double x) {
return x * x;
}
以前旧的形式能在旧的机器上运行。
double square(x) double x; {
return x * x;
}
旧形式的声明:
double square();
省略了参数类型的说明,这在ANSI C标准中也是合法的。因为这样的声明并没有对参数类型
做成任何说明,这意味着如果在函数调用是传入了错误类型的参数,函数调用就会不声不响地失败。
double square();
int main() {
printf("%g\n", square(3));
}
参数类型不匹配,程序打印出来的将是一堆“垃圾信息”。
//error
上面的程序改写为这样:
double square(double);
int main() {
printf("%g\n", square(3));
}
3会自动转换为double类型。另一种改写方法是,在这个程序中显式地给函数square传入一个double类型的参数:
//correct
double square();
int main() {
printf("%g\n", square(3.0));
}
程序的生命期往往超过了编程人员最初的预期,即使这个程序只是编程人员出于自用目的而编写的。
边栏推荐
- How does the new retail saas applet explore the way to break the digital store?
- Analysis and Simulation of Short Circuit Fault in Power System Based on MATLAB
- 腾讯专家献上技术干货,带你一览腾讯广告召回系统的演进
- MySQL 8.0.29 解压版安装教程(亲测有效)
- BCryptPasswordEncoder的使用及原理
- 疫情之下的裁员浪潮,7点建议帮你斩获心仪offer
- 查询表中开始日期与结束日期
- 浅谈在线编辑器中增量编译技术的应用
- Summary of String Copy, Concatenation, Comparison and Split Functions (1)
- 牛客网刷题——运算符问题
猜你喜欢

微信小程序picker滚动选择器使用详解

图卷积神经网络的数学原理——谱图理论和傅里叶变换初探

Express framework connects MySQL and ORM framework

Win11如何把d盘空间分给c盘?Win11d盘分盘出来给c盘的方法

哎,这要人老命的缓存一致问题啊

LeetCode318:单词长度的最大乘积

swagger使用教程——快速使用swagger

Excel导入和导出

Daily practice------Generate 13-digit bar, Ean-13 code rule: The thirteenth digit is the check code obtained by the calculation of the first twelve digits.

理解实现搜索二叉树
随机推荐
Error EPERM operation not permitted, mkdir 'Dsoftwarenodejsnode_cache_cacach Two solutions
哎,这要人老命的缓存一致问题啊
Daily practice------Generate 13-digit bar, Ean-13 code rule: The thirteenth digit is the check code obtained by the calculation of the first twelve digits.
Navisworks切换语言
leetcode:1488. 避免洪水泛滥【二分 + 贪心】
每日练习------生成13位条形, Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
简易的命令行入门教程
KDD 2020 | 深入浅出优势特征蒸馏在淘宝推荐中的应用
bean的生命周期
阿里SIM-基于检索的用户行为兴趣CTR模型(Search-based user Interest Model(SIM))
C# 连接SQL Sever 数据库与数据查询实例 数据仓库
链表Oj练习题 纯C语言
BCryptPasswordEncoder的使用及原理
LeetCode167:有序数组两数之和
lotus 1.16.0 最小快照导出 导入
数据库的三大范式
Graph Attention Mechanism
Various meanings of SQL's PARTITION BY syntax (with examples)
data storage
获得抖音商品详情 API