1

iPhone(Xcode 4)では、関数を使用して、

srandom(time(NULL));

両方srandsrandomあり、この警告を出しています。しかし、実行すると正常に動作します。クラスファイルの 1 つで警告が表示されるのはなぜですか? 他のファイルでそれを使用しましたが、警告はありません。

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

ただし、を使用するとarc4random()、この問題を解決できます。しかし、ほとんどの例srand()ではこのように使用されており、誰も文句を言いません。それが私が混乱している理由です。

4

1 に答える 1

0

srand は整数を期待しており、time() はポインターを返しているためです (特定のエラーの外観から)。明示的に int にキャストすると、それがなくなります。または、ポインターを読み取って実際の時間値を取得することが、代わりに探しているものかもしれません。ここで時間の戻り値が 100% 確実というわけではありませんが、time_t オブジェクトへのポインターではなく、実際に tics 値を返していることを再確認してください。

私が今読んだことによると、int としてキャストすると、1972 年以降の経過秒数である time_t 値を返すことになっています。したがって、通常はポインターではありませんが、あなたの場合はそうかもしれません。いずれにせよ、逆参照とキャストを追加するか、time_t を直接返すことができる場合はキャストだけを追加します。

于 2011-08-02T08:21:06.717 に答える