NSString内的宏扩展

dmi*_*747 0 macros objective-c

如何在NSString中扩展宏?我有以下代码:

#define MAX_MESSAGE_LENGTH 2000

NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";
Run Code Online (Sandbox Code Playgroud)

正如您可以预测的那样,"我的消息超出了MAX_MESSAGE_LENGTH个字符",而不是"您的消息超过2000个字符".有没有办法让我的MAX_MESSAGE_LENGTH扩展到字符串中?

Mat*_*ats 8

NSStrings的工作方式与C字符串类似.也就是说,你可以通过将它们彼此相邻地连接来连接字符串常量.

/* nested macro to get the value of the macro, not the macro name */
#define MACRO_VALUE_TO_STRING_( m ) #m
#define MACRO_VALUE_TO_STRING( m ) MACRO_VALUE_TO_STRING_( m )

#define MAX_MESSAGE_LENGTH 2000
NSString *alertTxt = @"Your message exceeded "
                      MACRO_VALUE_TO_STRING(MAX_MESSAGE_LENGTH)
                      " characters";
Run Code Online (Sandbox Code Playgroud)