阅读C项目初次感受

一,介绍

    在阅读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)同步调用,等待该调用结果的返回。为了保证线程的服务质量(不会被阻塞到一个不可能完成的操作上),这涉及到超时机制。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值