c语言

C语言

一、static,static inline,extern inline用法及定义

  • static:
    static在c里面可以用来修饰变量,也可以用来修饰函数。static修饰的变量储存在全局数据区。
    static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。
    static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。
    static对函数的修饰与对全局变量的修饰相似,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用。

    static法则:
    A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
    B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
    C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;

  • static inline:
    inline的作用仅仅是建议编译器做内联开展处理,而不是强制。
    内联函数(inline)可以减少CPU的系统开销,并且程序的整体速度将加快,但当内联函数很大时,会有相反的作用,因此一般比较小的函数才使用内联函数。通常,程序执行时,处理器从内存中读取代码执行。当程序中调用一个函数时,程序跳到存储器中保存函数的位置,开始读取代码执行,执行完后再返回。为了提高速度,C语言定义了inline函数,告诉编译器把函数代码在编译时直接拷贝到程序中,这样就不用执行时另外读取函数代码。static函数告诉编译器其他文件看不到这个函数,因此该函数只能在当前文件中被调用。static inline函数只能在当前文件中被调用,同时执行速度快,几个文件中都可以使用同样的函数名。

  • extern inline:
    static inline 是说这个函数就这么一个,而且没有外部可见性,在所有的编译单元中大家必须共用这么一个定义,这也是为什么 static inline 通常要放到头文件中的原因;extern inline是说这个函数虽然只有一个定义,但是既有内联的版本,也有非内联的版本,如果你能看得到它的定义。即在同一个编译单元中,那么你就可以用它的内联版本;看不到的话,你就可以用非内联版本,即和其它普通函数一模一样。它不会生成独立的汇编代码。
    extern inline的函数允许和外部函数重名,即在存在一个外部定义的全局库函数的情况下,再定义一个同名的extern inline函数也是合法的。

二、多文件开发的好处,.h文件和.c文件的异同

  • 多文件开发的好处:
    1.避免一而再,再而三地重复编译函数,因为编译器总是以文件为单位工作的。如果一个文件中包含的函数太多,则由于被修改的函数总是少数的几个,所以大多数正确的函数都得重新编译一次。
    2 使程序更加容易管理。可以将程序按逻辑功能划分,分解成各个源文件,便于程序员的任务安排,以及程序调试。
    3.把相关函数放到一特定源文件中。

  • .h文件和.c文件的异同:
    .h为头文件,.c为源文件,其实两者都是代码,为什么要做这样的区分呢?主要有几点好处:一是头文件用于共享,只用一句#include就能包含,当然.c也可以包含;二是如果你要写库的话,可是你又不想暴露你的源代码,你可以把.c编译成.obj或是.lib发给别人用,然后把.h作为使用说明书。所以一般情况下,.h里面全部都是声明,.c里面全部都是实现,有了.h就可以编译,有了.lib或你的.obj就可以连接
    c就是c++中的cpp文件..一个意思吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值