Objective-C學習筆記之預先處理程式是本文要介紹的內容,主要介紹了預先處理程式中語句的使用方法,預先處理程式語句以(#)標記。來看詳細內容。
一、#define
1、更進階的定義類型
給符號名稱指派運算式和其他任何東西。如:
- #define TWO_PI 2*3.141592654,#define AND &&
預先處理程式假設定義包含在程式的一行中。如果需要第二行,那麼上一行的最後一個字元必須是反斜線符號“\”。如:
- #define IS_LEAP_YEAR(y) y%4==0&&y0!=0\
- ||y@0==0
可帶參數。預定義(definition)通常稱作“宏”。
2、#運算子
如果在宏定義中參數之前放置一個#,那麼在調用該宏時,預先處理程式將根據宏參數建立C風格的常量字串。如:
- #define str(x) #x
- str(testing)——"testing"
- str("hello")——"\"hello"\"
3、##運算子
用於把兩個標記(token)連在一起。它的前面(或後面)是宏的參數名稱。預先處理程式使用調用該宏時提供的實際參數,並且根據該參數和##之後(或之前)的標記建立單個標記。如:
- #define printx(n) printf("%i\n",x##n);
- printx(20)——printf("%i\n",x20);
二、#import語句
.h->標頭檔(或包含檔案)。
設定一組#import語句,將其輸入到一個xxx.h的獨立檔案中,若需要則使用預先處理程式指令:
#import "xxx.h"。
#import <……>導致預先處理程式只在特殊的"system"標頭檔目錄中尋找包含檔案,目前的目錄不會被搜尋。
#import "……"預先處理程式在一個或者多個檔案目錄。
三、條件編譯
通常用於建立可以在不同電腦系統上編譯啟動並執行程式,經常用來開關程式中的各種語句。
1、#ifdef、#endif、#else和#ifndef語句
從一個電腦系統上移植到另一個電腦系統上。
2、#if和#elif預先處理程式語句
運算式結果非零——#else、#elif或#endif為止的所有後續行,否則跳過它們。
特殊運算子:#define (name) 也能用在#if語句中。
3、#undef語句
使一些已經定義的名稱稱為未定義的。