ObjectC基础之预处理学习

在Object-C中预处理不是编译器的一部分,而是编译过程中的一个单独步骤。简单说只是一个文本替换工具,我们将Object-C预处理成为称为OCCPP

用其他语言的思想来表示ObjectC的预处理即导包,大致方向是这样,但还是有一些出入的。

预处理:

预处理以井号(#)开头,前面不能有空格,且从第一列开始。

以下是一些常见的预处理指令。

ObjectC基础之预处理学习_第1张图片

例子:

示例1:

#define MAX_ARRAY_LENGTH 20

这时候像一个常量:指令告诉OCPP用20替换MAX_ARRAY_LENGTH,使用#define提高代码可读性

示例2:

#import 
#include "myheader.h"

指令告诉OCPP从Foundation Framework中获取foundation.h,并将文本添加到当前源文件中。#include "myheader.h"告诉OCPP从本地目录获取myheader.h,并将内容添加到当前源文件中。

示例3:

#undef FILE_SIZE
#define FILE_SIZE 42

将现有的FILE_SIZE取消,并将FILE_SIZE定义为42

预定义的宏

这里主要提及的是系统内置的宏,不可修改预定义的宏。
ObjectC基础之预处理学习_第2张图片

#import 

int main(){
	NSLog(@"File %s",__FILE__);
	NSLog(@"Date %s",__DATE__);
	NSLog(@"Time %s",__TIME__);
	NSLog(@"Line %s",__LINE__);
}

字符串化(#)

可将宏参数转换为字符串常量

#import 

#define message_for(a,b)
	NSLog(@#a "and" #b ": We love you!")

int main(void){
	message_for(Carole,Debra);
	return 0;
}

以上就是学习的预处理,若想深入还需实践。

更多课程请访问个人主页:

Github搭建个人博客(2019最新版,亲测

公众号:
ObjectC基础之预处理学习_第3张图片

你可能感兴趣的:(Objective-C老古董,ios,objective-c,flutter,预处理)