c++ - NSString & unichar 常量去重

标签 c++ objective-c c unicode c-preprocessor

我有两个简单的常量:

  1. NSString
  2. unichar,

定义如下:

static NSString * const string = @"\u2022";
static unichar const character = 0x2022;

我想在一个地方定义数字 0x2022

我尝试了很多组合(###,还有 CFSTR 宏)都没有成功。

可以吗?

最佳答案

(使用来自 How to concatenate twice with the C preprocessor and expand a macro as in "arg ## _ ## MACRO"? 的想法):

#define STRINGIFY(_x_) #_x_

#define UNICHAR_FROM_HEXCODE1(_c_) 0x ## _c_
#define UNICHAR_FROM_HEXCODE(_c_) UNICHAR_FROM_HEXCODE1(_c_)

#define NSSTRING_FROM_HEXCODE1(_c_) @"" STRINGIFY(\u ## _c_)
#define NSSTRING_FROM_HEXCODE(_c_) NSSTRING_FROM_HEXCODE1(_c_)

#define MYCHARCODE 2022
static unichar const character = UNICHAR_FROM_HEXCODE(MYCHARCODE);
static NSString * const string = NSSTRING_FROM_HEXCODE(MYCHARCODE);

预处理输出:

static unichar const character = 0x2022;
static NSString * const string = @"" "\u2022";

(注意 @"""\u2022" 等同于 @"\u2022"。)

关于c++ - NSString & unichar 常量去重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18320087/

相关文章:

c++ - 在 C++/CLI 中将托管 System::String 转换为 std::string

c++ - lambda 函数/表达式是否支持 constexpr?

c - 这是将 va_arg 与函数指针一起使用的正确方法吗?

c - 良好的 C 源代码浏览器

c - 使用 C 在字符串中插入参数

c++ - 链接器脚本 - 在内存区域的末尾放置一个节

c++ - 如何正确传递带有函数指针的数组?

objective-c - 安装新的 IPSW 后越狱能否继续存在?

iphone - UI 对象 -> 核心数据关联(子类化 UIButton,添加实例变量)

c++ - 从带有 OpenGL 的 C++ 转换为 Objective-C 代码