02-PCH常用的宏
2016-12-24 本文已影响133人
枫之叶_小乙哥
我们通常使用宏需要注意一些什么问题呢?
- 下面总结了一下:
#ifndef PrefixHeader_h
#define PrefixHeader_h
/*** 如果希望某些内容能拷贝到任何源代码文件(OC\C\C++等), 那么就不要写在#ifdef __OBJC__和#endif之间 ***/
/***** 在#ifdef __OBJC__和#endif之间的内容, 只会拷贝到OC源代码文件中, 不会拷贝到其他语言的源代码文件中 *****/
#ifdef __OBJC__ // 只拷贝到OC文件
/**** 日志 ****/
#ifdef DEBUG // 调试阶段
#define ZGKLog(...) NSLog(__VA_ARGS__)
#else // 发布阶段
#define ZGKLog(...)
#endif /* DEBUG */
/**** 颜色(参数统一加括号) ****/
#define ZGKColorA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)/255.0]
#define ZGKColor(r, g, b) ZGKColorA((r), (g),(b), 255)
#define ZGKRandomColor ZGKColor(arc4random_uniform(255), arc4random_uniform(255),arc4random_uniform(255))
#endif /* __OBJC__ */
/***** 在#ifdef __OBJC__和#endif之间的内容, 只会拷贝到OC源代码文件中, 不会拷贝到其他语言的源代码文件中 *****/
#endif /* PrefixHeader_h */
注意点:
- 1.只拷贝到OC文件
/***** 在#ifdef __OBJC__和#endif之间的内容, 只会拷贝到OC源代码文件中, 不会拷贝到其他语言的源代码文件中 *****/
#ifdef __OBJC__ // 只拷贝到OC文件
/**** 日志 ****/
#ifdef DEBUG // 调试阶段
#define ZGKLog(...) NSLog(__VA_ARGS__)
#else // 发布阶段
#define ZGKLog(...)
#endif /* DEBUG */
#endif /* __OBJC__ */
- 2.区分调试阶段和发布阶段不同的宏定义,如:打印
/**** 日志 ****/
#ifdef DEBUG // 调试阶段
#define ZGKLog(...) NSLog(__VA_ARGS__)
#else // 发布阶段
#define ZGKLog(...)
#endif /* DEBUG */
- 3.宏定义的参数统一加括号,防止出错
/**** 颜色(参数统一加括号) ****/
#define ZGKColorA(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:(a)/255.0]
#define ZGKColor(r, g, b) ZGKColorA((r), (g),(b), 255)
#define ZGKRandomColor ZGKColor(arc4random_uniform(255), arc4random_uniform(255),arc4random_uniform(255))