ObjectC基礎之預處理學習

在Object-C中預處理不是編譯器的一部分,而是編譯過程中的一個單獨步驟。簡單說只是一個文本替換工具,我們將Object-C預處理成爲稱爲OCCPP

用其他語言的思想來表示ObjectC的預處理即導包,大致方向是這樣,但還是有一些出入的。

預處理:

預處理以井號(#)開頭,前面不能有空格,且從第一列開始。

以下是一些常見的預處理指令。

徐代龍的技術博客

例子:

示例1:

#define MAX_ARRAY_LENGTH 20

這時候像一個常量:指令告訴OCPP用20替換MAX_ARRAY_LENGTH,使用#define提高代碼可讀性

示例2:

#import <Foundation/Foundation.h>
#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

預定義的宏

這裏主要提及的是系統內置的宏,不可修改預定義的宏。
徐代龍的技術博客

#import <Foundation/Foundation.h>

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

字符串化(#)

可將宏參數轉換爲字符串常量

#import <Foundation/Foundation.h>

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

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

以上就是學習的預處理,若想深入還需實踐。

更多課程請訪問個人主頁:

Github搭建個人博客(2019最新版,親測

公衆號:
徐代龍的技術專欄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章