前処理コマンド

1566 ワード

転載元:http://www.cnblogs.com/kykuaileren/archive/2011/09/09/2172801.html
ファイルに置いてある前処理コマンドに従ってソースファイルの内容を修正します.プリプロセッサは、すべての前処理コマンドを分析し実行します.その後、彼らを削除して、C++文だけを含む変換ユニットを得て、前処理コマンドは「顫」で始まります.
 
一般的な前処理コマンド:
1、葃includeはヘッダファイル(ヘッダファイルは一般的に関数プロトタイプとグローバル変数を含む)を含みます.
形式はよく次の二つがあります.
ヽoo.ツ..........................................................
標準ヘッダファイルを参照して、標準ヘッダファイルのデフォルトディレクトリのみを検索します.
奄include「myheader.h」
カスタムヘッダを参照して、コンパイル中のソースファイルのディレクトリを検索します.見つけられない時は標準ヘッダファイルを含むデフォルトディレクトリを検索します.
2、xi define定義符号、マクロ
例えば:33852;define PI 3.1415925/定義記号定数PIは3.1415925で、後はセミコロンを付けません.
コンパイルする前に、プリプロセッサはコードを巡回して、置換が意味があると考えられる場所で、文字列PIの定義値(3.1415925)を使って代替して、注釈または文字列のPIは置換しない.
萼undef削除菗define定義の符号
例えば:
#define PI 3.14159265
......
// PI 3.14159265

#undef PI
// PI
ただし、C++の中で、constを使用して変数を定義したほうがいいです.上のような定義は、次のように変更できます.
const long double PI=3.1415925;
両者を比較すると、前者はタイプの指定がなく、不必要なトラブルを引き起こしやすく、後者の定義がはっきりしているので、C+++の中で定数を定義することを推奨する.
奄デfineの欠点:
1)タイプチェックはサポートされていません.
2)スコープを考慮しない
3)符号名は名前空間に制限できない.
3、萼indef、璝ifdef、璣endif
ヽoo.....................................................
マクロが定義されている場合はコンパイルします.
ヽoo......................................................
マクロが定義されていない場合はコンパイルします.
湖南省にある地名
コンパイルブロックの制御を終了します.
4、菗菗if、33751;else
同前
表式がゼロでない場合は、コードをコンパイルします.
同前
ifをダミーオプションとしてコードをコンパイルします.
5、xi error
エラーメッセージを出力します.
6、葃pragma
コンパイルプログラムのための非通常の制御ストリーム情報を提供します.