我一直试图调试这个问题一段时间,老实说,我只是看不出我做错了什么。
为什么会出现语法错误?
#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'无法解决。”
我如何解决问题:
它与我正在使用的MinGW编译器有关。切换到Visual Studio解决了这个问题。
答案 0 :(得分:4)
;
指令末尾的 #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_t
返回的time
转换为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';
}
,而不是使用{{1}}。因为它使用名称空间。
除此之外,我已经看到了这个片段here。如果它有帮助,请使用该模式。
{{1}}
SO检查中是否存在问题是否有助于Eclipse Method could not be resolved in a simple program C++
Never use time() to initialize srand().。
修改强>
现在看来很多人都遇到了这种问题。我找到了一个问题How do I fix Eclipse CDT Error “Function 'isdigit' could not be resolved。他面临着同样的问题。提问者建议在他的问题编辑中解决这个问题。
引用该问题:
我现在认为这是一个代码分析问题。更好的解决方案是 编辑代码分析选项以使“功能不能 解决“是一个警告,而不是一个错误。这样你就可以看到 问题视图中的警告,但继续工作。如果功能是 真的很想念,编译器会告诉你的!我也有一个新的理论, 问题出在代码分析器后面的符号链接,因为 所有“缺失”函数都在符号链接的包含文件中。将 喜欢这个理论的任何意见。
希望能够解决问题。
答案 1 :(得分:3)
;
之后 #include
不应该在那里。
答案 2 :(得分:2)
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include
个文件不应以;