R.framework里Rboolean和Objective-C的一点小冲突

在OC项目里使用R语言提供的R.framework时,仅仅是在#import <R/R.h>之后就提示出错,仔细一看,原来是R_ext/Boolean.h这个头文件这样定义了一个Rboolean的数据类型:

#undef FALSE
#undef TRUE
typedef enum { FALSE = 0, TRUE /*, MAYBE */ } Rboolean;

但是FALSETRUE在OC里已经是关键字了,所以需要对Boolean.h的typedef部分稍作修改,若编译是OBJC,则把Rboolean定义为BOOL的别名即可。修改如下~

#if defined(__OBJC__)
typedef BOOL Rboolean; /* FALSE & TRUE is keyword in OBJC */
#else
typedef enum { FALSE = 0, TRUE /*, MAYBE */ } Rboolean;
#endif

Leave a Reply

Your email address will not be published. Required fields are marked *

17 − sixteen =