#include filename
filenameで指定されたファイルをそのソースコードに包含する。
コンパイラに設定したインクルードパスからファイルをインクルードする際は、filenameを<と>で圍む。また、ソースコードがある場所からの相對パスを指定してファイルをインクルードする際は、"と"で圍む。
#define macroname literal // 1
#define funcname(arg, ...) process // 2
macronameの名とliteralの値を持つオブジェクト形式マクロを定義する。
// マクロ展開例
#define MAX 10 // 此のマクロが定義される場合の以下のコードの展開例
int a[MAX]; → int a[10];
int b = MAX; → int b = 10;
int i;
for(i = 0;i < MAX;i++) → for(i = 0;i < 10;i++)
funcnameの名とprocessの内容を持つ關數形式マクロを定義する。引數の數は幾つでも構はず、また、引數の型は問はない。process内に用ゐられる識別子は、關數形式マクロfuncnameに與へられた儘の状態で置き換へられるので、副作用に注意する必要がある。
尚、processの内容が複數の文から成立つ場合、以下に示すやうにdo〜while節を使ふとよい。複合文で區切ると、マクロのユーザが關數形式マクロ呼び出しの際、文末にセミコロンをうつことが出來ない。
// マクロ展開例
#define swap(type, a, b) do{type t = a;a = b;b = t;}while(0)
int x, y;
x = 50; y = 40;
swap(int, x, y); → do{int t = x;x = y;y = t}while(0);
#undef name
nameで指定されたマクロ(オブジェクト形式、關數形式は問はない)を消去する。之以降、nameの名を持つマクロは置き換へられない。また、既にnameの名を持つマクロが#undef指令によつて消されてゐたり、もとより定義されてゐなかつた場合は、何も起らない。
#line linenum filename
現在コンパイラが處理してゐるファイル名をfilenameに、處理中の行をlinenum行目に變へる(實際ハードディスクにあるファイルの名前が變る訣ではない)。現在處理中のファイル名や行番號を表す定數である、__LINE__や__FILE__の内容を變更する。
#if constant
constantで表された定數式が眞であれば、以下、#else,#elif,#endifが表れるまでの文を實行する。詰り、constantには變數は指定出來ない。
#endif
#ifから始まるif節を打ち切る。
#else
#ifから始まるif節に於て、#ifの條件式が僞でありかつ、#elifがあればその條件式が全て僞の場合、この#elseから#endifまでの文を實行する。
#elif constant
#ifから始まるif節の入れ子構造を實現する。#else ifと同義。
#ifdef macro
條件式が、「若しmacroといふ名のマクロが定義されてゐれば」に統一されてゐる點を除いて、#ifと同じ。
#ifndef macro
條件式が、「若しmacroといふ名のマクロが定義されてゐなければ」に統一されてゐる點を除いて、#ifと同じ。
#error message
コンパイルを停止し、處理系定義の方法で、messageを出力する。
#pragma option
處理系定義のオプションを設定する。