当前位置:网站首页>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));
}
程序的生命期往往超过了编程人员最初的预期,即使这个程序只是编程人员出于自用目的而编写的。
边栏推荐
猜你喜欢

有没有并发系统设计的经验,我该怎么说?

新零售saas小程序如何探索数字化门店的破局之路?

字符串复制、拼接、比较以及分割函数总结(一)

.NET 6.0中使用Identity框架实现JWT身份认证与授权
![[极客大挑战 2020]Roamphp1-Welcome](/img/3b/2fa91f7478b8abf6efe0feafd24e58.png)
[极客大挑战 2020]Roamphp1-Welcome

疫情之下的裁员浪潮,7点建议帮你斩获心仪offer

huato hot update environment construction (DLL method hot update C# code)

The first time I used debug query and found that this was empty, does it mean that the database has not been obtained yet?please help.

ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法

Tensorflow中实现正则化
随机推荐
[NCTF2019]Fake XML cookbook-1|XXE漏洞|XXE信息介绍
You are a first-class loser, you become a first-class winner
《痞子衡嵌入式半月刊》 第 59 期
论文阅读之《Underwater scene prior inspired deep underwater image and video Enhancement (UWCNN)》
The first time I used debug query and found that this was empty, does it mean that the database has not been obtained yet?please help.
Mirror stand to collect
图注意力机制
获得抖音商品详情 API
代码越写越乱?那是因为你没用责任链
Excel导入和导出
Win11如何把d盘空间分给c盘?Win11d盘分盘出来给c盘的方法
阿里SIM-基于检索的用户行为兴趣CTR模型(Search-based user Interest Model(SIM))
Discuz magazine/news report template (jeavi_line) UTF8-GBK template
Navisworks切换语言
FP6600QSO SOP-8 USB专用充电端口控制器 用于快充电协议和QC2.0/3.0
【AAAI2020】阿里DMR:融合Matching思想的深度排序模型
云厂商做生态需要“真连接、真赋能”,用“技术+真金实银”发展伙伴
Security business revenue growth rate exceeds 70% 360 builds digital security leader
[MRCTF2020]Ezaudit
The way of life, share with you!