0

我有两个简单的常量:

  1. NSString
  2. unichar,

定义如下:

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

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

我尝试了很多组合(###,也是CFSTR宏)但没有成功。

可以做到吗?

4

1 回答 1

1

(使用How to concatenate two 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"。)

于 2013-08-19T19:04:44.703 回答