使用typedef进行语法解释
Syntax explanation using typedef
我想了解为什么在下面的typedef语法中使用FAR?
#define FAR
//some other instructions
//.....
//.....
typedef struct tagDEVICE_BUFFER_W
{
....
....
}DEVICE_BUFFER_W;
typedef DEVICE_BUFFER_W FAR * LPDEVICE_BUFFER_W; //Why FAR is used here?
如果我不使用下面提到的FAR怎么办?这会有什么不同吗?
typedef DEVICE_BUFFER_W * LPDEVICE_BUFFER_W;
这是过去遗留下来的。16位Windows代码具有近指针和远指针。我认为这是为了区分段间寻址和段内寻址,但内存已经衰退(很多)。
我实际上不知道什么是远指针,所以我只想把你指向维基百科。正如马塞洛所说,它似乎已经过时,是一种遗留技术。
请参阅维基百科的文章。
此外,取自编程论坛(此链接到daniweb线程):
在80286的旧时代,有近(16位)和远(16:16=20/24位)指针。由于x86的16位特性,内存被划分为64k字节(16位)的段。地址总线支持20到24位(1-16MB),因此为了寻址更大的区域,段寄存器与16位指针组合以形成完整的地址。这种体系结构仍然存在于今天的阁楼上,但它已经成为一个非问题。Windows使用"平面"内存模型,其中所有段都指向同一位置,而不是16位偏移,而是32位偏移。FAR关键字在现代x86软件中已变得不必要。
这可能对这个特定的实现没有什么不同,但在不同的操作系统或体系结构上,他们可以使用它来定义额外的信息。在这种情况下,它可能用于远指针:
#define FAR far
相关文章:
- 解释通过 lex/flex 实现 C/C++嵌套的"#include "Header""语法?
- 有人可以解释以下语法及其功能吗?
- 解释通过从函数引用返回数组的语法
- 你能解释一下这个语法吗:ros::rate loop_rate(10);
- 解释奇怪的 c++ 编译和语法
- 有人可以根据此代码解释起床和降低语法
- C++类构造函数语法的解释
- hpp文件中的块,这是c ++语法吗?为什么没有传入参数?有人可以解释一下,请
- 有人能解释一下特殊的std::函数模板参数列表语法(这个奇怪的类型(Types..))吗
- 引用变量何时合适,为什么?你能解释一下实际的语法和位置吗?
- 有人可以解释这种语法吗?T (&arr)[arrsize] vs T& arr[arrsize]
- 你能解释一下这个C++函数定义的语法吗?
- 难道没有人一劳永逸地解释typedef的语法吗?
- Visual Studio 中无法解释的语法错误
- 有人能解释一下这个模板函数声明的语法吗
- Matlab语法[C++解释]
- 有人能解释一下这个语法吗
- C++语法解释
- 使用typedef进行语法解释
- 以指针作为函数参数的语法解释(C++)