2009-07-18 5 views
1

私はこれを試してみました: なぜ定数をCGRectMakeに入れることができないのですか?

CGRectMake(0.0f, kFooBarHeight, 100.0f, 10.0f); 

私はエラー unexpected ';' before ')'、および too few arguments for CGRectMakeを取得します。私はこれと交換するとき:

CGFloat foo = kFooBarHeight; 
CGRectMake(0.0f, foo, 100.0f, 10.0f); 

すべては問題ありません。定数はパラメータとして渡すのに適していませんか?

+1

kFooBarHeightの定義を含めない限り、何が起こっているかは誰にも分かりません。 –

+0

面白いです。 kFooBarHeightの定義を掲示してみてください – IlDan

+0

なぜ定数の後ろに 'f'を置いていますか?私が定数を使うときは決してfを含んでいませんか? – zpesk

答えて

15

kFooBarHeightの定義がないと、良い答えが得られませんが、私はプリプロセッサの定義を使ってkFooBarHeightを定義したと思いますか?もしそうなら、最後にセミコロンを付け加えてください。あなたの定義は次のようになります:#define kFooBarHeight 10しかし、あなたは#define kFooBarHeight 10;と設定しました。

CGRectMake(0.0f, 10;, 100.0f, 10.0f); 

あなたの第二の例が正しく動作する理由です、それは次のように拡張されます:それはあなたが得るプリプロセッサに置き換えたときに何を持っていることは2番目の定義である場合

再び

CGFloat foo = 10;; 
CGRectMake(0.0f, foo, 100.0f, 10.0f); 

、この実際にはkFooBarHeightが定義されていないと言うことはできません。

+0

あなたは完全に正しいです、私はそこにセミコロンを持っていました!良い推測;) – Thanks

3
は、それがどのように使われるかをあなたが特定のために知っている限りの#defineを終了するために使用すべきではない、あなたの

#define kFooBarHeight 100; 

#define kFooBarHeight 100 

セミコロンを変更し

関連する問題