srand(time(NULL)) "Function 'srand' could not be resolved."



我一直在尝试调试这个问题一段时间,老实说,我只是看不出我做错了什么。

为什么会出现语法错误?

#include <iostream>;
#include <time.h>;
#include <stdio.h>;
#include <stdlib.h>;
using namespace std;

class Problem3 {
    public:
        bool isPrime(long double num) {
            srand(time(NULL));
            return 0;
        }
};

我得到的错误是,

"功能'srand'无法解析。"

  • 我现在很清楚,我不需要"include"语句后的分号
  • 我正在使用Eclipse CDT和MinGW作为我的编译器

我是如何解决问题的:

这与我正在使用的MinGW编译器有关。切换到Visual Studio解决了这个问题。

#include指令末尾的;是代码中的问题。 #include指令不需要(确实错误地放置(分号在末尾,不像C++语句。

[Warning] extra tokens at end of #include directive [enabled by default] 

似乎指令中>之后的任何字符都会导致此错误/警告。

          #include<iostream>a   //error

更改为此内容:

#include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

class Problem3 {
    public:
        bool isPrime(long double num) {
            srand(time(NULL));
            return 0;
        }
};
int main(){
    cout<<"Hello Main";
}

编辑:

关于链接器问题:

一个建议是C++期望类型在类型之间显式强制转换(超过 C 个(。因此,使用强制转换将time返回的time_t转换为unsigned int,即输入参数类型为 srand 。(当然,这可能不是链接器错误的问题(

不要使用stdlib.h,请尝试使用<cstdlib>,试试是否有帮助。因为它使用命名空间。

除此之外,我在这里看到了这个片段。如果有帮助,请使用该模式。

#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int main() 
{
    srand(time(0)); //use current time as seed for random generator
    int random_variable = rand();
    cout << "Random value on [0 " << RAND_MAX << "]: " 
              << random_variable << 'n';
}

SO检查中已经存在问题,这是否有助于Eclipse方法无法在简单的程序中解决C++

永远不要使用 time(( 来初始化 srand((。

编辑:

现在看来很多人都遇到了这种问题。我发现了一个问题如何修复日食CDT错误"无法解析函数'isdigit'。他面临着同样的问题。提问者在他的问题编辑中建议解决这个问题。

引自这个问题:

我现在认为这是一个代码分析问题。更好的解决方案是以编辑代码分析选项,以使"函数无法已解决"是警告而不是错误。这样你就可以看到"问题"视图中的警告,但继续工作。如果函数是真的不见了,编译器会告诉你的!我也有一个新的理论,问题出在符号链接之后的代码分析器上,因为所有"缺失"的功能都在符号链接的包含文件中。愿意喜欢对这个理论的任何投入。

希望这点能解决问题。

;不应该

#include之后出现。

#include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

#include文件不以;结尾

相关内容

最新更新