在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
参考博客 http://blog.csdn.net/kindazrael/article/details/8108868 在C语言中,预处理代码是非常强大的工具,能让代码变得可读性和可维护性更强。预处理代码在代码编译之前被提前处理,预处理代码均由#打头。 1.#define基础应用——声明常量 格式:#define 常量名 代替值 #define声明主要用于将常量赋予有意义的名字,例如,声明表示一周天数的常量: #define DAYS_WEEK 7 #define PI 3.1415 需要注意的几点: * #define命令之后是常量名,再之后是代替值,之间用空格分隔,末尾没有分号。 * 通常情况下,习惯将预处理的常量名全大写,单词之间用下划线隔开(与正常变量区分)。这样做的原因是在编译器处理这段 * 一个被定义的常量名并不是一个变量;它的值一旦被定义,便不能再被改变。 * 2.高级用法 * 若之前曾定义过 π,我们同样可以在定义中使用定义后的常量名来指代,例如: #define TWO_PI 2.0 * PI
* 还可以利用预处理定义 Objective-C 代码中任意一段字符或字符串,例如: #define AND &&
#define OR ||
#define EQUALS ==
if (y EQUALS 0 OR y EQUALS 1) // …
合理地利用
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
// 或
#define IS_LEAP_YEAR (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
if (IS_LEAP_YEAR) // 代码可读性更强。
* 一个定义通常应在一行代码中完成。但如果你需要手动空行,那么在每行后输入一个后划线(\)即可将几行代码连接起来成为一行。例如: #define IS_LEAP_YEAR(y) (y % 4 == 0 && y % 100 != 0) \
|| (y % 400 == 0)
if ( IS_LEAP_YEAR(currentYear) )
3.宏
* 一个参数: 例如: #define SQUARE(x) ( (x) * (x) ) 此时, * 两个参数: #define CalcInterest(x,y) ( x * y ) 代码中便可书写: int earnings = CalcInterest(10,5)); * 多个参数: #define Array(FIRST, ...) [NSArray arrayWithObjects: FIRST, ##__VA_ARGS__, nil] 4.#算符以及##算符 * #算符可生成一个C语言格式的字符串,如: #define string(x) #x 则 string(testing) == "testing" * ##算符用来谅解两段字符串。假设你有一组变量, #define printxvar(n) printf("%i\n", x ## n)
|
请发表评论