2009-07-18 9 views
1

Ich habe dies versucht:Warum kann ich keine Konstante in einen CGRectMake einfügen?

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

Ich erhalte einen Fehler unexpected ';' before ')' und too few arguments for CGRectMake. Wenn ich dies mit:

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

dann alles in Ordnung ist. Sind Konstanten nicht geeignet als Parameter weiterzugeben?

+1

Ich vermute, niemand kann Ihnen sagen, was vor sich geht, wenn Sie die Definition von kFooBarHeight einschließen. –

+0

lustig. Versuchen Sie, die kFooBarHeight-Definition zu posten – IlDan

+0

Warum setzen Sie das 'f' nach den Konstanten - wenn ich Konstanten verwende, schließe ich nie die f ?? – zpesk

Antwort

15

Ohne die kFooBarHeight-Definition ist es unmöglich, eine gute Antwort zu geben, aber ich vermute, dass Sie kFooBarHeight mit einer Präprozessor-Definition definiert haben? Wenn dem so ist, raten wir Ihnen am Ende ein Semikolon hinzu. Ihre Definition sollte so aussehen: #define kFooBarHeight 10 aber Sie haben als gesetzt: #define kFooBarHeight 10;.

Wenn das, was Sie haben die zweite Definition ist, wenn es durch den Präprozessor ersetzt bekommen Sie:

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

Deshalb Ihr zweites Beispiel korrekt funktioniert, es erweitert:

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

Auch dies ist nur eine fundierte Vermutung, es ist unmöglich, ohne die tatsächliche Definition von kFooBarHeight zu sagen.

+0

Du hast vollkommen recht, ich hatte da ein Semikolon! Gut geraten ;) – Thanks

3

Ihre

#define kFooBarHeight 100; 

zu

#define kFooBarHeight 100 

Semikolons ändern sollten nicht verwendet werden #defines zu beenden, wenn Sie genau wissen, wie es verwendet wird.

Verwandte Themen