为指针星号创建#define

时间:2014-05-28 13:47:17

标签: c++ c

我正在研究一种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版本中删除此定义,但我一直想知道为什么我们这样做。

1 个答案:

答案 0 :(得分:6)

我能想到的唯一原因是,在MS-DOS和286的旧时代,内存被分段,所以有时你需要一个far pointer,有时需要一个近指针。如果需要,宏可以将整个代码库从一个代码库切换到另一个代码库。