戻り値の型が不明な 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]];
}