D.C*_*.C. 0 c c++ symbols header objective-c
我正在寻找一种在没有标题或符号的情况下优雅降级的方法.考虑我的安全文件:
#import "FooHeader.h"
// override some method that needs a symbol from FooHeader
-(id)myImplementation:(FooSymbol)aSymbol
{
...
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在尝试导入FooHeader.h之前检查它是否存在.接下来,如果标头不存在,那么符号FooSymbol也不可用,所以我也不想尝试编译该方法.像这样的东西:
#if HEADER_EXISTS(FooHeader)
#import "FooHeader.h"
#endif
// override some method that needs a symbol from FooHeader
#if SYMBOL_EXISTS(FooSymbol)
-(id)myImplementation:(FooSymbol)aSymbol
{
...
}
#endif
Run Code Online (Sandbox Code Playgroud)
有人知道这种机制是否可行?理想情况下,这适用于C/C++/Objective-C环境.
谢谢
这通常使用autoconf完成.您创建一个名为configure.ac的文件.在configure.ac中,添加AC_CHECK_HEADER([FooHeader.h],....
在项目上运行./configure时,Makefile CFLAGS将获得-DHAVE_FooHeader定义.在C文件中使用#ifdef HAVE_FooHeader.
我没有方便的示例,但建议检查autoconfig上的信息页面或在线查看autotools教程.