新加坡是中等发达国家:c语言和VC的问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/01 16:39:20
我找了个随机数发生器
用C写的代码如下:
#include <dos.h>
static unsigned int RAND_SEED;
float random(void)
{ float ly;
RAND_SEED=(RAND_SEED*123+59)%65536;
ly=RAND_SEED/65536.0;
return(ly);
}
void random_start(void)
{
int temp[2];
movedata(0x0040,0x006c,FP_SEG(temp),FP_OFF(temp),4);
RAND_SEED=temp[0];
}
main()
{}
在WIN-TC里能编译,但是换到VC++里面就出错了,找个老鸟救救命,别叫我用C的库函数,我就是要一个自己编的!!!
VC错误提示如下:
--------------------Configuration: dasd - Win32 Debug--------------------
Linking...
dasd.obj : error LNK2001: unresolved external symbol _movedata
dasd.obj : error LNK2001: unresolved external symbol _fp_seg
dasd.obj : error LNK2001: unresolved external symbol _fp_off
Debug/dasd.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.

dasd.exe - 4 error(s), 0 warning(s)

movedata
FP_SEG 段地址
FP_OFF 偏移量
没有定义。

在movedata(0x0040,0x006c,FP_SEG(temp),FP_OFF(temp),4); 中
0x0040,0x006c,FP_SEG(temp),FP_OFF(temp)
等参数都是指向绝对的硬件内存地址,在win下是不允许直接访问硬件的,即使想方设法编译通过,也会产生非法操作的错误。
random_start(void)是产生一个随机数种子,使用系统时间来产生吧!
RAND_SEED=clock( );
本来在0x0040,0x006c也应该是时钟滴答数的地址。
一般情况下,随机数种子都是用时钟来初始化的,当然你也可以指定一个数。

错误是什么? 我怀疑可能是dos.h文件在vc++中没有,或者什么的。