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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值