前几天在windows下用MINGW编译一段代码时,出现了错误提示说srand48()和drand48()的未定义,去网上搜了下,发现好多人也遇到了同样的问题,大约有两种解决方案:
- 第一个就是说gcc必须是官方的,我用的事是tdm-mingw,而官方的好像是dw版(安装mingw的时候可以选择这项),我重新装了下还是有错误提示.
- 第二个是说装个gnuwin,我装了后不知道怎么配置,因为mingw里面好多库和gnuwin里面是一样的.
还有就是用cygwin直接编译就可以只不过要用到cygwin1.dll(位于cygwin的安装目录下)才可以运行在windows下
后来去网上找代码,发现都不能用后来自己就看着srand48()和drand48()的说明自己实现了下
#ifndef DRAND48_H
#define DRAND48_H
#include <stdlib.h>
#define m 0x100000000LL
#define c 0xB16
#define a 0x5DEECE66DLL
static unsigned long long seed = 1;
double drand48(void)
{
seed = (a * seed + c) & 0xFFFFFFFFFFFFLL;
unsigned int x = seed >> 16;
return ((double)x / (double)m);
}
void srand48(unsigned int i)
{
seed = (((long long int)i) << 16) | rand();
}
#endif