C++ 在这里未定义的宏 near和far是什么意思啊
答案:5 悬赏:50 手机版
解决时间 2021-03-31 22:01
- 提问者网友:人生佛魔见
- 2021-03-31 10:26
C++ 在这里未定义的宏 near和far是什么意思啊
最佳答案
- 五星知识达人网友:旧脸谱
- 2021-03-31 10:45
在WinDef.h里应该还能看到如下
#undef far
#undef near
#undef pascal
#define far
#define near
把 far和 near定义成空,上面图里相当于near far不存在
far和near应该是以前继承下来的字段(我个人的理解,以前段跳跃不是分短jump和长jump)追问near和far既然不存在,为什么还要加到这些代码里面追答它只是在目前的windows系统里可能用不着,不代表它在任何时候都没有用
一些同时支持linux和windows的C、C++代码,你会看到更多的宏定义,也有很多时候是空定义追问我听一个网友说好像#define XXX属于条件编译,但是我还是不懂int near、BOOL near、BOOL far是啥意思啊追答最简单的c/c++参考文档CLib.chm里:
#define macro-name replacement-string
#define命令用于把指定的字符串替换文件中的宏名称 . 也就是说,
#define使编译器把文件中每一个macro-name替换为replacement-string. 替换的字符串结束于行末
#if, #ifdef, #ifndef, #else, #elif, #endif
这些命令让编译器进行简单的逻辑控制. 当一个文件被编译时, 你可以使用这些命令使某些行保留或者是去处
这些控制命令是你所说的条件编译吧,没有什么特别的意思,跨平台代码有时候需要依赖这些命令
#define就是简单理解,替换就是了追问我没有C/C++的帮助文档,MSDN我也不会用,能把你的CHM帮助文档文件给我一份莫?谢谢!追答有一个叫cfree编译器带的说明文档,一般够用了
msdn主要是很多的windows api介绍而已,windows api多到很多人都想吐,自然也就被很多人鄙视了
#undef far
#undef near
#undef pascal
#define far
#define near
把 far和 near定义成空,上面图里相当于near far不存在
far和near应该是以前继承下来的字段(我个人的理解,以前段跳跃不是分短jump和长jump)追问near和far既然不存在,为什么还要加到这些代码里面追答它只是在目前的windows系统里可能用不着,不代表它在任何时候都没有用
一些同时支持linux和windows的C、C++代码,你会看到更多的宏定义,也有很多时候是空定义追问我听一个网友说好像#define XXX属于条件编译,但是我还是不懂int near、BOOL near、BOOL far是啥意思啊追答最简单的c/c++参考文档CLib.chm里:
#define macro-name replacement-string
#define命令用于把指定的字符串替换文件中的宏名称 . 也就是说,
#define使编译器把文件中每一个macro-name替换为replacement-string. 替换的字符串结束于行末
#if, #ifdef, #ifndef, #else, #elif, #endif
这些命令让编译器进行简单的逻辑控制. 当一个文件被编译时, 你可以使用这些命令使某些行保留或者是去处
这些控制命令是你所说的条件编译吧,没有什么特别的意思,跨平台代码有时候需要依赖这些命令
#define就是简单理解,替换就是了追问我没有C/C++的帮助文档,MSDN我也不会用,能把你的CHM帮助文档文件给我一份莫?谢谢!追答有一个叫cfree编译器带的说明文档,一般够用了
msdn主要是很多的windows api介绍而已,windows api多到很多人都想吐,自然也就被很多人鄙视了
全部回答
- 1楼网友:酒者煙囻
- 2021-03-31 14:51
我觉得跟汇编有关。near近转移,不跨段,far远转移,跨段。
- 2楼网友:孤老序
- 2021-03-31 13:50
这是微软自己定义的c语言关键字。iso c 是没有的追问ISO C?是什么东西?追答c语言国际标准,far和near是微软以前的c语言关键字
- 3楼网友:枭雄戏美人
- 2021-03-31 12:40
near和far是用来方便阅读的,在C++中,似乎是有这样两个定义的,一个叫near指针,是指占16位的指针,一个叫far指针,指占32位的指针。
所以在这个头文件定义里,在后面添加空定义的near和far就是为了告诉用户这个指针变量是near指针还是far指针。
near和far就是起到了一个方便阅读的作用,并没有代码上的意义。追问同样是宏定义,为什么所占的内存空间不同?有16位也有32位的?这是由什么决定的?
所以在这个头文件定义里,在后面添加空定义的near和far就是为了告诉用户这个指针变量是near指针还是far指针。
near和far就是起到了一个方便阅读的作用,并没有代码上的意义。追问同样是宏定义,为什么所占的内存空间不同?有16位也有32位的?这是由什么决定的?
- 4楼网友:动情书生
- 2021-03-31 12:04
这是古老年代的编译器留下的痕迹。
那时有近调用与远调用,近调用是64K区域内的调用,超出64K区域的地址就是远了。每64K叫一个“段”,跨段就是远。
现在 理解成空就可以了。
要找不到 near, far 加2句:
#define near
#define far
就可以了。
那时有近调用与远调用,近调用是64K区域内的调用,超出64K区域的地址就是远了。每64K叫一个“段”,跨段就是远。
现在 理解成空就可以了。
要找不到 near, far 加2句:
#define near
#define far
就可以了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯