| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 614 人关注过本帖
标题:[求助]幫忙看一下什麼意思
只看楼主 加入收藏
louieuser
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-4-14
收藏
 问题点数:0 回复次数:5 
[求助]幫忙看一下什麼意思
在dos.h中有如下定義:

#define   MK_FP(seg,ofs)     
   ((void far *)\(((unsigned
long)(seg)<<16)|(unsigned)(ofs)))

什麼意思?


2005-04-14 13:21
jehovahxxx
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-1-26
收藏
得分:0 
#define   MK_FP(seg,ofs)  ( (void far *) \ ( ( (unsignedlong) (seg)<<16 ) | (unsigned) (ofs) ) )

前面MK—FP是有参宏   后面是 (SEG  强制转换成 无符号 长整型 向左位移16位(位运算))和(  OFS强制转换成无符号型)做位或运算
(VOID FAR*)\ 不知道什么东西 ```

要不在 前面 还有别的宏定义 才疏学浅 不认识 SORRY

#include \"stdio.h\" main() {FILE *myMind; printf(\"Life is A rollercoaster\"); /*生活就像过山车*/ if(myMind=fopen(\"My Heart\",\"w+\")==NULL) printf(\"tomorrow never comes\"); fputs(\"YOU\",myMind); printf(\"U\'R the last things on my mind!\"); }
2005-04-14 20:19
角度
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2005-3-16
收藏
得分:0 
楼上个人说明好玩!!

角度!
2005-04-14 21:19
620LCC
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2005-3-25
收藏
得分:0 
那个\是什么意思

2005-04-15 18:30
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
void far *   这是远指针,即32位指针,不但有16位的位移量,还有16位的段地址,所以可以突破64k的限制.



 MK_FP(seg,ofs)

seg ->  段地址

ofs ->   偏移量

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-04-15 21:04
louieuser
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-4-14
收藏
得分:0 
那這個宏有什麼用呢?地址是如何計算的?遠指針不太了解
char  keypress(void)       /*C语言的kbhit()会被Ctrl+Break中断,所以自己编写*/
{  int far * key_start,* key_next;
/*下面兩句又是什麼意思?0x40,0x1a是什麼?特殊的地址嗎?*/
key_start=(int far *)MK_FP(0x40,0x1a);
key_next=(int far *)MK_FP(0x40,0x1c);
if(*key_start!=*key_next)return(1);
else return(0);
}
2005-04-16 23:37
快速回复:[求助]幫忙看一下什麼意思
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016518 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved