C安全编程教学-声明和初始化-不要创建相同函数或者对象的不兼容声明(三)

注:本课程参考文献《C安全编码标准》

 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~

目录

 一.引言

二.不安全代码

三.解决方案

四.总结


 一.引言

    在这个代码冲突的例子里,想象一下,函数f()在a.c文件里被提前描绘了一个模样(即声明了一个原型),但在b.c文件里,却又给它画了一幅完全不同的面孔(定义了另一个不兼容的原型)。这种情况下,两个原型相互矛盾,导致程序行为无法预测,这就是所谓的“未定义行为15”。更糟糕的是,如果谁不小心调用了这个函数,那简直就是踏入了一个未知的雷区,“未定义行为41”会接踵而至,很可能会带来一连串严重的、甚至是灾难性的问题。

二.不安全代码

extern int f(int a);

int g(int a){
    return f(a);
}

long f(long a){
    return a * 2;
}

三.解决方案

    这个相容解决方案使用了函数f()的兼容原型。

extern int f(int a);
int g(int a){
    return f(a);
}

int f(int a){
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值