我正在研究一种API,我认为它可以追溯到80年代,API的原始架构师不再在我们公司工作了。 API,我们称之为ABC API是在公共头文件abc.h
中定义的,其中包含以下定义:
#define ABC_PTR_DECL *
然后在头文件的许多地方:
typedef unsigned char uint8, ABC_PTR_DECL uint8_ptr;
问题是,为什么有人#define
ABC_PTR_DECL并且不直接使用星号?是否有理由将其定义为可以在一个地方轻松更改?
我想在较新的API版本中删除此定义,但我一直想知道为什么我们这样做。
答案 0 :(得分:6)
我能想到的唯一原因是,在MS-DOS和286的旧时代,内存被分段,所以有时你需要一个far pointer,有时需要一个近指针。如果需要,宏可以将整个代码库从一个代码库切换到另一个代码库。