这很简单,但让我疯狂。
我正在尝试在Objective-C代码中实现一个简单的函数。当我写这篇文章时,
NSInteger Sort_Function(id id1, id id2, void *context) {
}
我得到一个错误,即在声明结束时预计会出现分号。但是,我在很多很多例子中都看到过这种语法。我怎么可能做错了?如果重要,这是一个iOS应用程序,该函数嵌套在if子句中。提前谢谢。
答案 0 :(得分:6)
函数定义 - 您发布的这个片段 - “嵌套在if
子句中”?不幸的是,这在C语言中是非法的(和扩展名为Obj-C) - 所有函数声明和定义都必须位于文件的顶层。 @implementation
部分内部也是一个选项:
// Start of file
// Declaration or definition valid here
void my_func(void); // Declaration
void my_other_func(void);
void my_third_func(void);
void my_func(void) { // Definition
return;
}
@implementation MyClass
// Definition also valid here
void my_other_func(void) {
return;
}
- (void) myMethod {
if( YES ){
void my_third_func(void) { // Invalid here
return;
}
}
}
@end
您是否可能将函数语法与block syntax混淆?
// The caret indicates definition of a block, sort of an anonymous function
int (^myBlock)(int);
myBlock = ^int (int my_int) {
return my_int;
};