看代码过程中碰到的一些问题以及笔记

问:在VC编译代码过程中,Generating Code...的作用是什么?

答:Generating Code...是用来产生连接用到的文件,但是不是所有的CPP文件都会产生这个,有一些CPP一起作用才可以产生一些类似于OBJ文件这种。

 

问:如何查看某个DLL中的函数?静态链接是以什么形式存在的?

答:DLL的函数是封装起来的,我们只能看到它的接口,不能看到具体函数是如何实现的。静态链接库是我们经常提到的LIB,它其中的函数是在编译时被程序调用,而动态的是运行时才调用。用静态链接生成的EXE文件通常比较大,因为它把函数全部放到了生成的EXE中,而用DLL生成的EXE往往没那么大,函数还是放在DLL中,而没被放到EXE中。

 

动态链接与静态链接的不同之处在于:动态链接允许可执行模块(.dll 文件或 .exe 文件)仅包含在运行时定位 DLL 函数的可执行代码所需的信息。在静态链接中,链接器从静态链接库获取所有被引用的函数,并将库同代码一起放到可执行文件中。

使用动态链接代替静态链接有若干优点。DLL 节省内存,减少交换操作,节省磁盘空间,更易于升级,提供售后支持,提供扩展 MFC 库类的机制,支持多语言程序,并使国际版本的创建轻松完成。

问:在看代码过程中,SDK开发文档有什么帮助,它与真正代码之间的联系是怎样的?

答:在看代码过程中,可能会用到一些SDK的函数,但不是所有都用到,在我们具体想实现一些功能的时候,可以到SDK中寻找我们需要的函数接口,如果有,我们可以直接使用,如果没有,我们就要自己实现具有这个功能的函数。

 

问:#define far
        #define near

这种后面啥也没有,是啥意思啊?

答:类似于这样的空define一般是和#ifdef或#ifndef联合使用的。

这样的define就是说明已经定义了far和near,可以作为开关使用,比如用在作为运行日志的记录上,当定义时就进行日志记录,否则不进行日志记录。当然这只是一个用处,这样的用法主要就是不是使用其值,而是只要知道是否定义。

32位编程里已经不再区分far和near了

  near  (近)指针:16位段内偏移地址   
  far(远)指针:16位段地址+16位段内偏移地址   
  huge(巨)指针:32位规格化的具有唯一性的内存地址 

 

问:#define BI_RGB        0L                                0L是什么?

答:0L在实际中为long 型的数,OL就相当于BI_RGB,这种定义有一种好处,就是不用设置其类型

 

学习如何用VC中的资源查找对应的代码函数。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章