在我的代码中的某些情况,我最终只在定义了该函数时调用该函数,否则我不应该.我怎样才能实现这一目标?
like:
if (function 'sum' exists ) then invoke sum ()
Run Code Online (Sandbox Code Playgroud)
可能是另一种方式来问这个问题是:如何确定函数是否在运行时定义,如果是,则调用.
此问题适用于iOS版本兼容性.
我知道如果函数存在,如果它是使用respondsToSelector的典型Objective-C样式方法,则该函数是否存在.即对于如下方法:
- (void) someMethod:(NSInteger)someParameter;
Run Code Online (Sandbox Code Playgroud)
您可以使用:
if ([self respondsToSelector:@selector(someMethod:someParameter)]) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
但是C风格的功能呢?如何检查是否存在如下函数:
void CStyleFunctionName(FoundationTypeRef parameter);
Run Code Online (Sandbox Code Playgroud)
谢谢!
为什么以下代码不能按预期工作?
void foobar(int);
#ifndef foobar
printf("foobar exists");
#endif
Run Code Online (Sandbox Code Playgroud)
它总是打印信息; 它显然无法检测到一个函数作为一个实体的存在.(这是一个过载的问题吗?)
为什么不能#ifdef(或其变体)检测函数声明?声明应该在预处理时提供,所以它应该有效,不应该吗?如果没有,是否有替代方案或解决方法?