首页 > 其他分享 >Objective-C #define 用法

Objective-C #define 用法

时间:2022-12-09 15:05:29浏览次数:43  
标签:定义 代码 YEAR 用法 year Objective PI define


在 C 语言中,预处理代码 (Preprocessor) 是非常强大的工具,能让你的代码变得更加易读和易改。利用预处理代码,你可以重新定义代码的一部分,使得你的代码更适合你的风格。预处理代码 (Preprocessor) 在代码编译之前被提前处理。预处理代码均由一个井号 (#) 打头。

1. 关于 #define

​#define​

#define MONTHS_PER_YEAR 12


​#define​

#define 常量名 代替值


​#define​​​​#define​​ 声明通常位于一个文件的顶部,紧接在 ​​#import​​ 文件导入定义之后。需要注意的是, ​​#define​​​​#define​

#define PI 3.141592654 // 计算圆的面积使用 "PI * radius * radius" 即可


,这比处处书写 3.141592654 要方便许多。(改起来也快很多)
 

2. 更高级的用途

​#define​​​​TWO_PI​

#define TWO_PI 2.0 * 3.141592645


由于我们之前曾定义过 π,我们同样可以在定义中使用定义后的常量名来指代:


#define TWO_PI 2.0 * PI


除了常量以外,你还可以利用预处理定义 Objective-C 代码中任意一段字符或字符串,例如:


#define AND && #define OR || #define EQUALS == if (y EQUALS 0 OR y EQUALS 1) // …


​#define​​,可增强代码的可读性。对比下列两行代码:

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​

如:


#define SQUARE(x) ( (x) * (x) )


​y = SQUARE(v + 1);​​ 等价于 ​​y = ( (v + 1) * (v + 1) );​​。

两个参数

例如,你可以定义:


#define CalcInterest(x,y) ( x * y )


代码中便可书写:


int earnings = CalcInterest(10,5));


多个参数

​[NSArray arrayWithObjects: object, ..., nil]​​ 这一命令。利用​​#define​​,你可以简化代码:

#define Array(FIRST, ...) [NSArray arrayWithObjects: FIRST, ##__VA_ARGS__, nil]


​##__VA_ARGS__​​ 用于表示省略号所代表的所有内容。

 

4. # 算符以及 ## 算符

# 算符可产生一个 C-语言 格式的字符串。如:


#define string(x) #x //则 string(testing) == "testing"


​x1​​ 到 ​​x100​​。如果你想打印其中某一个变量的值。你可以这样定义:

#define printxvar(n) printf("%i\n", x ## n)


​printxvar(20);​​ 在编译时将被识别为 ​​printf(“%i\n”, x20);​​。这样只需要输入 ​​printxvar(n);​​便可以打印出 ​​xn​​​​##__VA_ARGS__​​,它可用来抓取省略号所代表的所有内容。

标签:定义,代码,YEAR,用法,year,Objective,PI,define
From: https://blog.51cto.com/u_15907570/5925305

相关文章