【问题标题】:Unable to compile - scope issues [closed]无法编译 - 范围问题 [关闭]
【发布时间】: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 请看代码的绝对大小,以及选择所有可以消除的困难。
  • 尽量减少只显示第一个引用错误的代码。
  • 另外,多谈谈你的构建方式。其他成功使用的代码(即库、知名教程......)的许多错误都是由于错误地构建它们而引起的。有构建它的教程吗?是否有手册或至少有说明?
  • 我没有投反对票,但您有效地要求人们找到书中的代码并复制到另一个站点(顺便说一句,它挂在我身上,声称无限期地“检查我的浏览器”显示任何东西)。尝试转到错误/警告中标识的违规行,展开所涉及的宏,然后确定所涉及的变量和常量的类型(例如popxpop[x])。你得到的错误/警告指出一些非常糟糕的代码(或使用来自一个编译器的非标准功能的代码,使用不支持这些功能的编译器构建)。

标签: c++ srand


【解决方案1】:

pop() 是一个函数并且被索引,就好像它是一个变量一样。快速浏览一下,有一个数组op,这可能就是这里需要的。那么在这些地方可能应该是op[x] 而不是pop[x]

当看原作时,就是这样。因此,用户的复制错误应该被关闭。

【讨论】:

  • 很抱歉,尽管尽了最大努力,但还是无法理解您的观点。 op[x] 不清楚,可能是我需要的更多细节。
  • @jiten 简单地说:您复制了错误的代码。从源中正确复制这些行。
  • 我首先在纸上写了两次代码,从而复制了代码。请告诉线路号,因为我仍然找不到线路。
  • @jiten 您提供的错误消息有行号。只需阅读错误并仔细检查
  • 请参阅编辑后的帖子,使用 Dev-C++ 编译时出错。
猜你喜欢
  • 2022-06-15
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
相关资源
最近更新 更多