【发布时间】:2019-03-23 11:26:48
【问题描述】:
我从一本书中复制了模拟退火程序(第一个结果链接here),并且在 main() 中的以下行中面临以下编译问题。
srand48(tp.tv_usec);
使用 Dev-C++ 编译时出错:
[Error] 'srand48' was not declared in this scope
完整代码位于:https://onlinegdb.com/HyruMTmdN。 & 相关(精简版)如下:
#include <sys/time.h>
extern double drand48();
extern long lrand48(/*long*/);
extern int rand();
extern void srand(long seedval);
//main program
main()
{
//set random number generator
struct timeval tp;
struct timezone tzp;
gettimeofday(&tp,&tzp);
srand48(tp.tv_usec);
return 1;
}
【问题讨论】:
-
不是我投反对票,但这里的人不喜欢链接而不是直接显示的问题。尝试在这里提出所有信息的问题并发送minimal reproducible example。
-
@Yunnosch 请看代码的绝对大小,以及选择所有可以消除的困难。
-
尽量减少只显示第一个引用错误的代码。
-
另外,多谈谈你的构建方式。其他成功使用的代码(即库、知名教程......)的许多错误都是由于错误地构建它们而引起的。有构建它的教程吗?是否有手册或至少有说明?
-
我没有投反对票,但您有效地要求人们找到书中的代码并复制到另一个站点(顺便说一句,它挂在我身上,声称无限期地“检查我的浏览器”显示任何东西)。尝试转到错误/警告中标识的违规行,展开所涉及的宏,然后确定所涉及的变量和常量的类型(例如
pop、x、pop[x])。你得到的错误/警告指出一些非常糟糕的代码(或使用来自一个编译器的非标准功能的代码,使用不支持这些功能的编译器构建)。