C/C++のプリコンパイル命令
4965 ワード
1.前処理プロセスはプログラムのソースコードをスキャンすることによって、コードに含まれている前処理命令をチェックし、他のソースファイルを含む、マクロを定義するなどの初歩的な変換を完了し、新しいソースコードをコンパイラに提供する.
2.プリコンパイル命令は#で始まる.
3.共通命令:
(1)#include
#includeプリプロセッサは、システムのデフォルトディレクトリまたはカッコ内のパスで検索されます.通常、システムに付属する共通ヘッダファイルを含むinclude「xxx.h」プリプロセッサは、プログラムソースファイルが存在するディレクトリで検索されます.見つからない場合は、システムのデフォルトディレクトリで検索され、プログラム作成者が作成したヘッダファイルを含むのによく使用されます.
(2)#define、#undef命令#define命令は、マクロ名と呼ばれる識別子および列を定義し、ソースプログラムにおけるマクロ名の出現のたびに定義された列をマクロ置換と呼ぶ.
パラメータ付きdefine命令(マクロ関数)パラメータ付きマクロと関数呼び出しは、define MIN(x,y)(((x)>(y))のように似ているように見えます. (x) : (y))
#undefコマンドは、定義されたマクロをキャンセルします.
マクロ定義の#演算子は、その後のパラメータを文字列に変換します.
マクロ定義の##演算子は、##の両側に表示されるパラメータを1つのシンボルに結合します.
(3)条件コンパイル命令#if、#elif、#else、#endif
#if
#elif
#else
#endif
(4)
じょうけんコンパイルめいれい
#ifdef、#ifndef、#endifコマンド
後で指定したマクロが定義されているかどうかを確認し、検査結果に基づいて後の文をコンパイルするかどうかを選択します.ここで、ifdefは「定義がある場合」、#ifndefは「定義がない場合」を表し、これは通常、ヘッダファイルを重複して含む問題を防止するために使用することができる.
(5)特殊符号指令
プリコンパイラはいくつかの特殊な記号を識別することができる.プリコンパイラは、ソース・プログラムに表示されるこれらの列に対して適切な値で置き換えられます.
2.プリコンパイル命令は#で始まる.
3.共通命令:
(1)#include
#include
(2)#define、#undef命令#define命令は、マクロ名と呼ばれる識別子および列を定義し、ソースプログラムにおけるマクロ名の出現のたびに定義された列をマクロ置換と呼ぶ.
パラメータ付きdefine命令(マクロ関数)パラメータ付きマクロと関数呼び出しは、define MIN(x,y)(((x)>(y))のように似ているように見えます. (x) : (y))
#undefコマンドは、定義されたマクロをキャンセルします.
マクロ定義の#演算子は、その後のパラメータを文字列に変換します.
マクロ定義の##演算子は、##の両側に表示されるパラメータを1つのシンボルに結合します.
(3)条件コンパイル命令#if、#elif、#else、#endif
#if
#elif
#else
#endif
(4)
じょうけんコンパイルめいれい
#ifdef、#ifndef、#endifコマンド
後で指定したマクロが定義されているかどうかを確認し、検査結果に基づいて後の文をコンパイルするかどうかを選択します.ここで、ifdefは「定義がある場合」、#ifndefは「定義がない場合」を表し、これは通常、ヘッダファイルを重複して含む問題を防止するために使用することができる.
(5)特殊符号指令
プリコンパイラはいくつかの特殊な記号を識別することができる.プリコンパイラは、ソース・プログラムに表示されるこれらの列に対して適切な値で置き換えられます.
__FILE__ ( )
__LINE__
__DATE__
__STDC__ ANSI C ,
__TIME__
#error , 。
#line _LINE_ _FILE_ , 。
#pragma , 。
1. #pragma once
。 #ifndef , 。
2. #pragma message
。 :#pragma message(“ ”)
#pragma warning
, :#pragma warning(disable : 4507 34; once : 4385; error : 164)
, disable 4507 34 ,once 4385 ,error 164 。
,
#pragma warning(push [, n]): , n , n。
#pragma warning(pop): , 。