Я пытался отладить эту проблему некоторое время и, честно говоря, я просто не вижу, что я делаю неправильно.
Почему есть синтаксическая ошибка?
#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 решил проблему.
;
в конце #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';
}
в SO уже есть вопрос, поможет ли это Метод Eclipse не может быть решен в простой программе C ++
Никогда не используйте time () для инициализации srand ()..
РЕДАКТИРОВАТЬ:
Теперь, похоже, у многих людей возникла такая проблема. Я нашел вопрос Как исправить ошибку Eclipse CDT «Функция« isdigit »не может быть решена». Он сталкивается с той же проблемой. Аскер предложил обойти это в своем вопросе редактирования.
Цитируется из этого вопроса:
Теперь я считаю, что это проблема анализа кода. Лучшее решение
отредактировать параметры анализа кода, чтобы сделать «Функция не может быть
решено «быть предупреждением, а не ошибкой. Таким образом, вы можете увидеть
предупреждения в представлении «Проблемы», но продолжают работать. Если функция
ДЕЙСТВИТЕЛЬНО отсутствует, компилятор скажет вам! У меня также есть новая теория,
что проблема с анализатором кода, следующим по символическим ссылкам, потому что
все «отсутствующие» функции находятся в символических включаемых файлах. Было бы
люблю любой вклад в эту теорию.
Надеюсь, что это указывает на решение проблемы.
;
не должно быть там после #include
,
#include <iostream>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include
файлы не должны заканчиваться ;