我们正在努力在两个C++
代码库,我们称之为一个和乙,则一个是构建作为一个库,并分发头文件.h
和.a
文件乙。如何确定使用相同宏的不同C++代码库?
比方说,有Lock.h
文件中一个如下:
// Lock.h in code base A
class Lock {
... ...
#ifdef TRACK_THREAD_OWNER_FOR_DEBUG
virtual int GetLockOwner();
#endif
... ...
private:
CriticalSection section;
#ifdef TRACK_THREAD_OWNER_FOR_DEBUG
int threadOwner;
#endif
};
// Caller.cc in code base B
#include "xxx/xxx/Lock.h"
Lock lockObject;
lockObject.Lock();
在代码库一个,我们默认将使TRACK_THREAD_OWNER_FOR_DEBUG
,只是最终发布前一天可以更改它。
我们投中了一些硬错误,因为TRACK_THREAD_OWNER_FOR_DEBUG
在一个和乙不同,而导致内存崩溃,因为sizeof(Lock)
是两个不同的库。
那么如何保护这个错误呢?如果构建宏TRACK_THREAD_OWNER_FOR_DEBUG
在两个项目中有所不同,是否可以在构建caller.cc
文件时触发编译器错误?
是的,链接错误也是可以接受的。 – ZijingWu