zoukankan      html  css  js  c++  java
  • c模块化编程

    C语言模块化编程(封装)

    • 模块即是一个.c 文件和一个.h 文件的结合,头文件(.h)中是对于该模块接口的声明。模块化的实现方法和实质:将一个功能模块的代码单独编写成一个.c文件,然后把该模块的接口函数放在.h文件中。
    • 对外发布的模块调用本质上是一个编译好的.so或.a或.o的二进行制文件加一个.h文件的组。
    • 不要在.h文件中定义变量,如果不同的模块包含该.h文件,则在不同的模块中该变量对应不同的地址。
    • 模块内的函数和模块内的全局变量需在.c 文件开头冠以static 关键字声明,一方面是限定了函数的作用范围只是在本模块中起作用,另一方面也给人传达这样的信息:该函数不会被其他模块调用。
    • 函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变,赋值操作除外。
    • 一个模块提供给其它模块调用的外部函数及数据需在.h 中文件中冠以extern 关键字声明。
    • extern会破坏模块的封装性,不建议使用, 因此extern一般用于全局变量的声明。

    extern的预处理示例:

    /* in var_a.h */
    #ifdef VAR_GLOBAL
    #define VAR_EXT
    #else
    #define VAR_EXT extern
    #endif
    
    VAR_EXT int var1;
    VAR_EXT int var2;

      如果var_b.h包含了var_a.h且在var_b.h中有以下宏定义

    #define VAR_GLOBAL

      由于VAR_GLOBAL被定义为空,于是变量展开为

    int var1;
    int var2;

      如果在var_b.h包含了var_a.h但在var_b.h中没有以上宏定义则变量展开为

    extern int var1;
    extern int var2;
  • 相关阅读:
    列表推导式,生成器表达式
    迭代器,生成器初始
    装饰器的进阶
    函数名用途,初始装饰器
    函数参数,和空间
    py文件的操作
    字符串相关操作
    python基础二
    Django简介
    Django初识
  • 原文地址:https://www.cnblogs.com/tongyishu/p/11691050.html
Copyright © 2011-2022 走看看