头文件之辨条件编译(二)

来源:互联网 发布:python 时间转日期 编辑:程序博客网 时间:2024/05/17 23:03

    我们知道在变量和类型的编程中,特别是在c语言和VC中区分了声明(Declare)和定义(definde)。在头文件中我们一般只完成声明,告诉使用方如何使用,但一般并不为这些声明分配内存(例如,变量或代码占用内存)。所以,秉承前一个头文件之辨中所提到的,头文件自身再引用头文件时,一般以够用为“要”,源文件在实现时,可能需要引用更多的头文件才能完成,这时候再引用更多的头文件。

   在头文件中一般不定义,也并非绝对,也会有某些意外在里面。所以,在编译中有了条件编译指令来解决

   但是,如果一个静态的lib库和你当前的工程中遇到重复定义的问题,例如,some GUID的重复定义为问题。则不太好办,因为静态库是没有办法修改的。对于当时遇到的问题,经过多方面查找网上资料,发现和印证了initguid.h对于某些directsound相关guid的定义有影响。其实分析此重复定义问题,看看这些GUID的声明方式受到一个定义在initguid.h的宏定义的影响,也可以顺藤摸瓜找到此解决方式。

    在一些事情的哲学上,我总坚持,对于有些无法应对的场景应该如何应对,不是我们思考的,而是我们在开始就做准备如何避免这种情况的方式。像我遇到的静态库与当前工程重复定义的冲突,其实就是如此,自己找了一些麻烦:(

原创粉丝点击