ios .mm编译出错,nslog宏定义,,nsobjcruntime.h报错


在运行应用时候,我们可能会加入一些打印信息来帮助我们跟踪应用的运行信息,代码如下

#ifdef DEBUG

#define NSLog(format, ...) do {                                                                          \

fprintf(stderr, "<%s : %d> %s\n",                                           \

[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String],  \

__LINE__, __func__);                                                        \

(NSLog)((format), ##__VA_ARGS__);                                           \

fprintf(stderr, "-------\n");                                               \

} while (0)

#else

#define NSLog(...)

#endif


 

正常使用都正常,但是就是不能在.mm 文件里引用,不然nsobjcruntime.h就会报错,坑了我好久才找到问题所在,因为宏定义的NSLog名字和系统的一样,在.mm里引用的话,就会报错,同时会导致nsobjcruntime.h也报错。

具体原因不清楚,如果有知道原因的,麻烦指教一下。


****解决办法****

①     把宏定义里的NSLog改成其它名字就编译通过了。

②     不过刚刚发现了不用改名字的方法,------> 在宏定义里加入

#import <UIKit/UIKit.h>  或者  #import <Foundation/Foundation.h>   


就可以编译通过!wtf!




猜你喜欢

转载自blog.csdn.net/Kevin_love_Chrissy/article/details/73293849
今日推荐