我们在实际编写代码的时候,经常需要判断当前编译环境是否存在我们需要的头文件,根据存在情况做不同的操作
GCC 5开始支持的,Mac系统下 XCode自带的Clang编译器也是支持的。
可以这样使用,判断是否有这些文件,并且定义相应的宏,下面做不同的处理:
1
2
3
4
5
6
7
8
9
10
11
12#ifdef __has_include
# if __has_include(<optional>)
# include <optional>
# define have_optional 1
# elif __has_include(<experimental/optional>)
# include <experimental/optional>
# define have_optional 1
# define experimental_optional
# else
# define have_optional 0
# endif
#endif也可以这样使用来判断,导入不同的头文件:
1
2
3
4
5# if __has_include(<AFNetworking/AFNetworking.h>)
#import <AFNetworking/AFNetworking.h>
#else
#import "AFNetworking.h"
#endif