看到一些源码中的标准模块中使用private 声明API函数!我的问题是,如果采用public声明,其他模块不就也可以调用嘛,这样省却了重新声明,不就是可以减少程序的体积吗?为什么这些源码的作者为什么不这样做呢?不知我说的对不对!望大侠们指点!

解决方案 »

  1.   

     你想的没错,标准模块就是公用模块,就是为了公用.如果采用public声明,其他模块就可以调用,可以减少程序的体积,这就是标准模块的优点.但是,某API只有标准模块才调用,如果采用public声明反尔是一种浪费.当然,如果重复用private 声明那也是不合理的.
      

  2.   

    (1)使用private不会显著影响程序体积,影响是理论上的
    (2)初学者往往喜欢拷贝粘贴代码。所以都搞成public,如果你用了很多功能,很多基本api定义会重复,还要手工修改,而你删除掉某个模块的api定义,以后代码又不方便拆分。
    (3)写程序不要猜想背后发生的事情,而应该尊重约定,微软没有反对这么做,实践中也不会出问题的问题,没有必要杞人忧天。
      

  3.   

    这个牵涉到windows pe文件格式、vb的linker、windows如何装入image等等问题。简单地说,vb将标准模块编译为一个obj,然后静态连接到主程序里面。
    windows会一次性将可执行文件镜像装入内存。lz问了很多问题,但是孤立去解决这些问题没有什么意义,lz不妨把计算机体系结构(组成原理)、操作系统、编译原理的教材掏出来好好温习下。