NSString 内的宏扩展

发布于 2024-12-10 17:44:39 字数 282 浏览 0 评论 0原文

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

#define MAX_MESSAGE_LENGTH 2000

NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";

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

How can I expand a macro inside NSString? I've got the following code:

#define MAX_MESSAGE_LENGTH 2000

NSString *alertTxt = @"Your message exceeded MAX_MESSAGE_LENGTH characters";

As you can predict I get "Your message exceeded MAX_MESSAGE_LENGTH characters" instead of "Your message exceeded 2000 characters".
Is there a way to get my MAX_MESSAGE_LENGTH expanded in the string?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岛歌少女 2024-12-17 17:44:39

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";

NSStrings works like C strings. I.e. you can concatenate string constants by writing them next to each other.

/* 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";
蓝眸 2024-12-17 17:44:39

您可以像这样使用 stringWithFormat:

NSString *alertTxt = [NSString stringWithFormat:@"Your message超过 %i 个字符", MAX_MESSAGE_LENGTH];

这使用相同的占位符 %@%i 等作为 NSLog。

You can use stringWithFormat: like this:

NSString *alertTxt = [NSString stringWithFormat:@"Your message exceeded %i characters", MAX_MESSAGE_LENGTH];

This uses the same placeholders %@, %i, etc. as NSLog.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文