inline函数为什么最好要添加static

测试:
测试文件:show.h,  main.c, printf.c
测试文件说明:
1)show.h:定义了void foo(void) inline函数
2)main.c:不包含show.h头文件,但声明了void show()原型
3)show.c:包含show.h头文件;并且有对foo函数的调用;

测试文件内容:

//show.h
#include<stdio.h>

static inline void show()
{
    printf("%s\n", __func__);
}
                                
//main.c
#include<stdio.h>

void show();

int main()
{
    show();
    return 0;
}

//printf.c
 #include "show.h"
 
 void print_fun()
 {
     show();
 }


测试结果:
1)如果show.h中对show() 函数的定义,没有使用static,则链接编译成功
2)如果show.h中对show()函数的定义,使用了static ,则连接时出错
错误提示:
         main.c:(.text+0xa): undefined reference to `show'
         collect2: error: ld returned 1 exit status


结论:
如果inline函数没有使用static关键字,则函数可以通过extern而不用包含声明inline函数的头文件就可以实现对inline函数的调用,显然很容易引起隐藏性错误,但链接器却不会给出错误哪怕是警告; 所以inline函数最好声明为static类型,这样即使有错也会给出错误提示,代码可维护性也比较好。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值