1

さて、これが MacOS の簡単な質問であることはわかっていますが、「arc4random % n」を含むコードをコンパイルすると、ターミナルに次のようなエラー ログが表示されます。

main.m:9: error: ‘arc4random’ undeclared (first use in this function)
main.m:9: error: (Each undeclared identifier is reported only once
main.m:9: error: for each function it appears in.)

そして私は使用します:

gcc `gnustep-config --objc-flags` -lgnustep-base main.m -o main

それをコンパイルする

そして、これが私のコードです(役立つ場合):

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

        int number, guess;

    number = arc4random() % 101;

    while (!guess == number) {  
        NSLog (@"Please guess a number between 1 and 100");
        scanf ("%i", &guess);

        if  (guess < number) {
            NSLog (@"Sorry, guessed too low!");
        }

        else if (guess > number) {
            NSLog (@"Sorry, guessed too high!");
            }
    }

        NSLog (@"You guessed correct!");

        [pool drain];
        return 0;
}
4

2 に答える 2

2

clang代わりに使用することを検討してくださいgcc

使用する

clang -fno-objc-arc main.m -framework Foundation -o main

また、前者はバイアスがないため、のarc4random_uniform(101)代わりに使用します。arc4random() % 101

于 2012-12-30T13:43:50.163 に答える
2

いくつかのこと:

  1. >> と << を使用していますが、これらは有効な比較演算子ではありません。これはコンパイルされますが、期待どおりには実行されません。> (より大きい)、>= (以上)、< (より小さい)、または <= (以下) のいずれかを使用する必要があります。

  2. コンパイル エラーは、arc4random の使用によるものです。これは関数ですが、そのように使用していません。行を次のように変更する必要があります

    number = arc4random() % 101;
    
  3. これについて 100% 確信があるわけではありませんが、scanf の %i は %d のように見えます

于 2012-11-01T08:36:26.740 に答える