srandom(time(NULL)) выдает предупреждение - указатель на целое число без приведения

В iPhone (Xcode 4) с помощью функции

srandom(time(NULL));

и srand, и srandom выдают это предупреждение. Но при запуске работает нормально. Почему я получаю предупреждение в одном из моих файлов класса? Я использовал это в других файлах, но без предупреждения.

Warning: passing argument 1 of 'srand' makes integer from pointer 
without a cast

Однако использование arc4random() может решить эту проблему. Но в большинстве примеров srand() используется таким образом, и никто не жалуется. Вот почему я в замешательстве.


person karim    schedule 02.08.2011    source источник
comment
Почему вы сообщаете об ошибке srand ? Ваш код говорит srandom.   -  person Alexandre C.    schedule 02.08.2011
comment
Я сказал, что у обоих одинаковое предупреждение.   -  person karim    schedule 02.08.2011


Ответы (1)


Потому что srand ожидает целое число, а time() возвращает указатель (судя по вашей конкретной ошибке). Явное приведение к int заставит его уйти. Или, возможно, вместо этого вы ищете чтение указателя для получения фактического значения времени. Не на 100% уверен в возвращаемом значении времени здесь, но я бы дважды проверил, чтобы убедиться, что оно действительно возвращает значение тики вместо указателя на объект time_t, который останется в основном неизменным с течением времени.

Согласно тому, что я только что прочитал, он должен возвращать значение time_t, которое при преобразовании в int представляет собой количество секунд, прошедших с 1972 года. Так что обычно это не указатель, но в вашем случае это может быть. В любом случае добавьте либо разыменование и приведение, либо просто приведение, если вы можете заставить его напрямую возвращать time_t.

person Michael Dorgan    schedule 02.08.2011
comment
Ты прав. Я также заметил, что возвращаемое значение time(). возвращает структуру time_t. Но все люди в примере используют srand() таким образом, и никто не жалуется. Может быть, в чистом c time() возвращает метку времени int. - person karim; 02.08.2011
comment
time_t не является структурой, это целое число. - person Prof. Falken; 02.08.2011