srand (time (NULL)) «Функция ‘srand’ не может быть решена.»

Я пытался отладить эту проблему некоторое время и, честно говоря, я просто не вижу, что я делаю неправильно.

Почему есть синтаксическая ошибка?

#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 »не может быть решена».

  • Теперь я хорошо понимаю, что мне не нужны точки с запятой после операторов включения
  • Я использую Eclipse CDT вместе с MinGW в качестве моего компилятора

Как я решил проблему:

Это было связано с компилятором MinGW, который я использовал. Переход на Visual Studio решил проблему.

-3

Решение

; в конце #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 »не может быть решена». Он сталкивается с той же проблемой. Аскер предложил обойти это в своем вопросе редактирования.

Цитируется из этого вопроса:

Теперь я считаю, что это проблема анализа кода. Лучшее решение
отредактировать параметры анализа кода, чтобы сделать «Функция не может быть
решено «быть предупреждением, а не ошибкой. Таким образом, вы можете увидеть
предупреждения в представлении «Проблемы», но продолжают работать. Если функция
ДЕЙСТВИТЕЛЬНО отсутствует, компилятор скажет вам! У меня также есть новая теория,
что проблема с анализатором кода, следующим по символическим ссылкам, потому что
все «отсутствующие» функции находятся в символических включаемых файлах. Было бы
люблю любой вклад в эту теорию.

Надеюсь, что это указывает на решение проблемы.

4

Другие решения

; не должно быть там после #include,

3

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

#include файлы не должны заканчиваться ;

2
По вопросам рекламы [email protected]