Objective-Cプリプロセッサ
Objective-C学習ノートの前処理プログラムは本稿で紹介する内容であり,主に前処理プログラムにおける文の使い方を紹介し,前処理プログラム文は(#)で表記する.詳細を見る.
一、#define
1、より高度な定義タイプ
シンボル名に式や他のものを割り当てます.次のようになります.
プリプロセッサ仮定定義は、プログラムの行に含まれます.2行目が必要な場合は、前の行の最後の文字が反斜線記号""でなければなりません.次のようになります.
パラメータ付き.定義済み(definition)は、通常「マクロ」と呼ばれます.
2、#演算子
マクロ定義のパラメータの前に#を配置すると、マクロが呼び出されると、プリプロセッサはマクロパラメータに基づいてCスタイルの定数文字列を作成します.次のようになります.
3、##演算子
2つのタグ(token)を結合するために使用されます.前(または後)はマクロのパラメータ名です.プリプロセッサはマクロを呼び出すときに提供される実際のパラメータを使用し、そのパラメータと##の後(または前)のタグに基づいて単一のタグを作成します.たとえば、次のようになります.
二、#import文
.h->ヘッダファイル(またはファイルを含む).
#import文のセットを設定し、xxxに入力します.hの独立ファイルでは、必要に応じて前処理プログラム命令を使用する.
#import "xxx.h".
#import<……>では、前処理プログラムは特殊な「system」ヘッダファイルディレクトリに含まれるファイルのみを検索し、現在のディレクトリは検索されません.
#import"……"プリプロセッサは、1つ以上のファイルディレクトリにあります.
三、条件コンパイル
通常は、異なるコンピュータシステム上で実行可能なプログラムをコンパイルするために使用され、プログラム内の様々な文をスイッチングするためによく使用されます.
1、#ifdef、#endif、#elseおよび#ifndef文
あるコンピュータシステムから別のコンピュータシステムに移植する.
2、#ifおよび#elifプリプロセッサ文
式の結果はゼロではありません.else、elif、またはendifまでのすべての後続行をスキップしないと、スキップされます.
特殊演算子:#define(name)も#if文で使用できます.
3、#undef文
定義済みの名前の一部を未定義と呼びます.
一、#define
1、より高度な定義タイプ
シンボル名に式や他のものを割り当てます.次のようになります.
- #define TWO_PI 2*3.141592654,#define AND &&
プリプロセッサ仮定定義は、プログラムの行に含まれます.2行目が必要な場合は、前の行の最後の文字が反斜線記号""でなければなりません.次のようになります.
- #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、##演算子
2つのタグ(token)を結合するために使用されます.前(または後)はマクロのパラメータ名です.プリプロセッサはマクロを呼び出すときに提供される実際のパラメータを使用し、そのパラメータと##の後(または前)のタグに基づいて単一のタグを作成します.たとえば、次のようになります.
- #define printx(n) printf("%i
",x##n);
- printx(20)——printf("%i
",x20);
二、#import文
.h->ヘッダファイル(またはファイルを含む).
#import文のセットを設定し、xxxに入力します.hの独立ファイルでは、必要に応じて前処理プログラム命令を使用する.
#import "xxx.h".
#import<……>では、前処理プログラムは特殊な「system」ヘッダファイルディレクトリに含まれるファイルのみを検索し、現在のディレクトリは検索されません.
#import"……"プリプロセッサは、1つ以上のファイルディレクトリにあります.
三、条件コンパイル
通常は、異なるコンピュータシステム上で実行可能なプログラムをコンパイルするために使用され、プログラム内の様々な文をスイッチングするためによく使用されます.
1、#ifdef、#endif、#elseおよび#ifndef文
あるコンピュータシステムから別のコンピュータシステムに移植する.
2、#ifおよび#elifプリプロセッサ文
式の結果はゼロではありません.else、elif、またはendifまでのすべての後続行をスキップしないと、スキップされます.
特殊演算子:#define(name)も#if文で使用できます.
3、#undef文
定義済みの名前の一部を未定義と呼びます.