Objective C
的主要特点之一是简单的内省。这个功能的典型用途是在调用某个方法(函数)之前,检查它是否确实存在。虽然以下代码编译通过(
Apple LLVM version 7.0.2 (clang-700.1.81)
),但在运行时会抛出错误...@import Foundation;
@interface Maybe : NSObject + (void) maybeNot; @end
@implementation Maybe @end
int main (){ [Maybe maybeNot]; }
在调用之前添加一个简单的条件...
if ([Maybe respondsToSelector:@selector(maybeNot)])
我们可以在运行时决定是否调用该方法。
在“标准”C
(c11
)或C++
(std=c14
)中是否有任何方法可以实现这一点?
例如...
extern void callMeIfYouDare();
int main() { /* if (...) */ callMeIfYouDare(); }
我想我也应该提一下,我正在测试/使用这个在一个Darwin
运行环境中。