Mac OSX/iPhone上的C预处理器,使用'#'键?

Coo*_*coa 2 cocoa cocoa-touch objective-c stringification c-preprocessor

我正在看一些开源项目,我看到以下内容:

NSLog(@"%s w=%f, h=%f", #size, size.width, size.height)
Run Code Online (Sandbox Code Playgroud)

在尺寸符号之前,'#'究竟是什么意思?这是C字符串的某种前缀吗?

smo*_*gan 8

为了详细说明dirkgently的答案,这看起来像是一个带有NSSize(或类似)参数的宏的实现,并打印变量的名称(这正是#正在做的;将变量的名称转换为包含的字符串变量的名称)然后是它的值.所以在:

NSSize fooSize = NSMakeSize(2, 3);
MACRO_NAME_HERE(fooSize);
Run Code Online (Sandbox Code Playgroud)

宏将扩展到:

NSLog(@"%s w=%f h=%f", "fooSize", fooSize.width, fooSize.height);
Run Code Online (Sandbox Code Playgroud)

并打印:

fooSize w=2.0 h=3.0
Run Code Online (Sandbox Code Playgroud)

(类似于NSStringFromSize,但带有变量名)