1

私はこのマクロを使用します:

#define fontMacro(name, size) ((UIFont *)[UIFont fontWithName:(NSString *)(name) size:(CGFloat)(size)])

UIFont *font = fontMacro(@"Akrol", 15); // Error: Expected ']'
UIFont *font2 = ((UIFont *)[UIFont fontWithName:(NSString *)(@"Akrol") size:(CGFloat)(15)]); // work fine

では、どのように使用できますfontMacroか?

4

1 に答える 1

2

問題はsize、マクロの引数が右側の「サイズ」のすべての出現箇所fontMacro(@"Akrol", 15)で展開されるため、展開されることです。

((UIFont *)[UIFont fontWithName:(NSString *)(@"Akrol") 15:(CGFloat)(15)])
                            unwanted expansion here ---^

マクロ引数の名前を次の_size_ように変更すると、問題が解決するはずです。

#define fontMacro(_name_, _size_) ((UIFont *)[UIFont fontWithName:(NSString *)(_name_) size:(CGFloat)(_size_)])
于 2013-07-29T06:47:26.463 に答える