3

次のように NSLog を使用しようとすると:

NSLog(@"one" @"two" @"three");

これは機能し、コンソールに onetwothree を出力します。しかし、私がこのように使用しようとすると

NSString *s = [NSString stringWithFormat:@"three"];  
NSLog(@"one" @"two" s);

上記は機能せず、「Expected ')'」というコンパイル時エラーが発生します。どうすればよいかわかりません。

助けはありますか?

PS XcodeColors を使用しようとしていますが、上記のように NSLog に引数を与える必要があります。以下のように使用すると答えないでください。私はこれが機能することを知っています。しかし、上記のように引数を NSLog に渡す必要があります。

NSString *s = [NSString stringWithFormat:@"%@ %@ %@", @"one", @"two", @"three"];  
NSLog(s, nil);

編集

このように NSLog を使用して、目的の結果を得ることができます。

NSString *s = @"ss";
NSLog(@"one" @"two" @"%@",s);

それは私の別の質問につながります。NSLogのマクロを作りたいです。マクロは次のようになります。

LOG_X(val) NSLog(@"xx" @"yy" @"%@",val @"zz")

以下が機能する場合:

LOG_X(@"one")
LOG_X(@"one" @"two" @"three")

しかし、以下は機能しません

NSString *s = @"one two three";
LOG_X(s);

同じエラー「Expected ')'」が表示されます

4

2 に答える 2

8

NSStringで変数の内容を出力したい場合はNSLog、フォーマットされた文字列のように扱う必要があります。

したがって、代わりに:

NSLog(@"one" @"two" s);

使用する:

NSLog(@"one" @"two" @"%@", s);

添加:

valマクロの最後にコンマとを挿入する必要があります。次のようになります。

#define LOG_X(val) NSLog(@"xx" @"yy" @"%@" @"zz", val).

于 2013-06-02T02:52:13.863 に答える