我可以声明一个返回类型不确定的 C 函数(没有 C 编译器警告)吗?返回类型可以是int
, float
, double
,void *
等。
undetermined_return_type miscellaneousFunction(undetermined_return_type inputValue);
您可以在其他函数中使用此函数来返回一个值(尽管这可能是运行时错误):
BOOL isHappy(int feel){
return miscellaneousFunction(feel);
};
float percentage(float sales){
return miscellaneousFunction(sales);
};
我在找什么:
声明和实现具有未定义返回类型的 C 函数(或 Obj-C 方法)对于面向方面的编程可能很有用。
如果我可以在运行时拦截另一个函数中的 Obj-C 消息,我可能会将该消息的值返回给原始接收者,或者不执行其他操作。例如:
- (unknown_return_type) interceptMessage:(unknown_return_type retValOfMessage){
// I may print the value here
// No idea how to print the retValOfMessage (I mark the code with %???)
print ("The message has been intercepted, and the return value of the message is %???", retValOfMessage);
// Or do something you want (e.g. lock/unlock, database open/close, and so on).
// And you might modify the retValOfMessage before returning.
return retValOfMessage;
}
所以我可以通过一点补充来截取原始消息:
// Original Method
- (int) isHappy{
return [self calculateHowHappyNow];
}
// With Interception
- (int) isHappy{
// This would print the information on the console.
return [self interceptMessage:[self calculateHowHappyNow]];
}