Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 宏还可以生成方法名吗?_Iphone_Objective C_Macros - Fatal编程技术网

Iphone 宏还可以生成方法名吗?

Iphone 宏还可以生成方法名吗?,iphone,objective-c,macros,Iphone,Objective C,Macros,使用宏创建方法名通常有效吗?我的意思是…实际上,在编译器真正运行之前,它只是简单的文本替换,对吗?没有什么可以阻止它。例如,在设备驱动程序的实现中,它甚至很常用(尽管我不知道是否适用于iphone)。在这种情况下,宏用于生成样板代码,为了使此样板与代码通信,您必须猜测正确的函数名(不建议),或者使用生成宏,例如USB_ATTACH(uthum)为uthum驱动程序生成ATTACH方法的签名。是,它是有效的;宏扩展发生在编译器读取代码之前。主要限制是不能在预处理器指令中嵌入预处理器指令。例如: /

使用宏创建方法名通常有效吗?我的意思是…实际上,在编译器真正运行之前,它只是简单的文本替换,对吗?

没有什么可以阻止它。例如,在设备驱动程序的实现中,它甚至很常用(尽管我不知道是否适用于iphone)。在这种情况下,宏用于生成样板代码,为了使此样板与代码通信,您必须猜测正确的函数名(不建议),或者使用生成宏,例如
USB_ATTACH(uthum)
uthum
驱动程序生成ATTACH方法的签名。

是,它是有效的;宏扩展发生在编译器读取代码之前。主要限制是不能在预处理器指令中嵌入预处理器指令。例如:

// This is ok:
#define PREFIX(X) this_name_is_prefixed_ ## X
// ...
- (void) PREFIX(doSomething):id;
// ...

// But this isn't:
#define IMPORT(X) #import X
IMPORT(<Foundation/Foundation.h>) // <= Don't expect this to work
//这没问题:
#定义前缀(X)此名称的前缀为
// ...
-(void)前缀(doSomething):id;
// ...
//但这不是:
#定义导入(X)#导入X
导入()//