阅读C项目初次感受

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csenjoy/article/details/80055291

一,介绍

    在阅读C代码时,快速掌握方式,就是弄清楚各个项目工程之间的关系,各个工程中编译单元(.c)的关系。例如,我们一般将UI和底层逻辑分离成为两个工程:

    -solution.sln

        +xxxUI.vcproj

        +XXXLogic.vcproj

 二、项目之间的关系

    项目一般是通过连接库方式提供:静态链接库(xxxLogic.lib)或者动态连接库(xxxLogic.dll)。两种链接库的分区别可以自行百度。

    不管哪种方式链接库都需要提供:头文件以及连接对应的xxxLogic.lib文件



三,编译单元之间的关系

   编译单元之间的关系,则不得不考虑两个关键字:static与extern

   我们将编译单元内部使用的变量和函数定义为static函数,这样该函数或变量就不会导出该编译单元。

   我们将导出函数放在.h文件中,可以提供给其他编译单元(或项目)使用。如果编译单单元a.c使用c编译器,而b.c编译单元有需要使用c++编译器的话,可以将b.c中的导出函数声明为 extern "C"{}

四,内存管理

    每个编译模块应该负责维护自己的内存。

  1)其他模块使用时,对于指针拷贝方式。什么时候,释放该内存呢?

    释放内存应该有两种方式:a)客户端编译单元,使用完之后主动调用被调用编译单元提供的接口释放内存

                                           b)编译单元自动检测,当发现内存的引用计数为0时,自动释放

2)其他模块使用时,值拷贝方式。

五,线程管理

六,超时管理

    对于调用一般有两种方式:1)通过注册回调,这种方式,属于异步调用,客户编译单元不必维护该调用(如内存管理,或者超时管理)。2)同步调用,等待该调用结果的返回。为了保证线程的服务质量(不会被阻塞到一个不可能完成的操作上),这涉及到超时机制。



猜你喜欢

转载自blog.csdn.net/csenjoy/article/details/80055291