Objective-C では、変数パラメータを受け取る関数がある場合、書式指定子が関数に渡される実際のパラメータと一致することをどのように保証しますか?
質問する
3919 次
2 に答える
28
これは、NS_FORMAT_FUNCTION マクロを使用して行われます。
次のような関数があるとします。
LOG(int level,NSString *format,...);
レベルはログ レベルであり、フォーマットにはフォーマット文字列が含まれ、可変引数はフォーマット文字列へのパラメーターです。
コンパイル時にパラメーターの数と型が正しいことを確認するために、関数を次のように定義します。
LOG(int level,NSString *format,...) NS_FORMAT_FUNCTION(2,3);
ここでの 2 と 3 は、フォーマット文字列の引数リスト内の位置と、可変パラメータ リストの開始を示していることに注意してください。
于 2013-06-07T11:39:16.860 に答える
0
C はデフォルトでどちらもチェックしません。
現在: LLVM では、パラメータの数とタイプの両方を CF マクロを介してチェック (強制) できます。NS_FORMAT_FUNCTION
于 2013-06-07T14:54:48.267 に答える