为指针星号创建一个#define
Creating a #define for the pointer asterisk
我正在开发一个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版本中删除这个定义,但是我一直想知道为什么我们这样做。
我能想到的唯一原因是,在MS-DOS和286的糟糕的旧日子里,内存是分段的,所以有时你需要一个远指针,有时需要一个近指针。如果需要的话,宏可以将整个代码库从一种切换到另一种。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 为什么一个简单的C++程序会有错误的结果?是 #define 引起的吗?
- 可以一个#define一个文字字符串,其中包含用于资源文件的非ANSI字符的字符串
- 如何使用'#define';定义一个宏来执行多个方法
- 在#define宏中创建一个实例
- 如何在另一个 #define 中实现 #define
- 如果你只有一个标识符,#define 做什么
- 我们是否应该在.h和.cpp文件中都包含一个宏(#define)
- 我可以创建一个#define并在throw中使用它吗?
- 基于另一个已定义符号的条件#define
- 如何创建一个#define来创建一个2d矢量
- 为指针星号创建一个#define