前几天在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  
posted on 2018-04-16 11:15  yoyo_sincerely  阅读(3062)  评论(0编辑  收藏  举报