C++前処理まとめ、系統的な学習心得
5176 ワード
プリプロセッシングパラメータなしマクロ定義 パラメータ付きマクロ #include文の使い方 条件コンパイルコマンドの使用 #pragma #line #undef #ifdef#ifndef #if
パラメータなしのマクロ定義
#
これが前処理コマンドであることを示します
PI
マクロ名、識別子
3.14
マクロ名に代わる真の値である文字列
*プリプロセッシングのコンパイルでは、PIに遭遇するたびに自動的に3.14に置き換えられます.*注意:プログラムに表示される文字列にマクロ名が含まれている場合は置き換えません*マクロ定義の役割ドメインをundefで終了できます
パラメータ付きマクロ定義例えば パラメトリックマクロ定義特徴点: (利点)単純関数はパラメトリックマクロで定義され、関数呼び出しは存在せず、コード実行速度 を増加させることができる.(欠点)タイプチェックはできません関数ではないので (注意)かっこ、かっこ、かっこ、重要なことを3回話します.
#includeコマンド上の2つの方法は違いがありますか? <>を使用して、c/c++ライブラリ関数ヘッダファイルを格納するディレクトリに含めるヘッダファイルを探します. は「」を使用して、まず現在のディレクトリに含めるヘッダファイルを探します.これ以上上のように探しに行かなかった. 「」は、絶対パスおよび相対パス を使用することができる.
ここではヘッダファイルについてですが、ヘッダファイルにはどんな内容が入っていますか? マクロ定義 構造体、連合、列挙 typedef宣言 外部関数 グローバル変数 注意すべき点: includeにはヘッダファイル しか含まれません.ファイルにはネスト可能なものが含まれ、1つの含まれるファイルには別のファイル も含まれる.あるファイルに別のファイルが含まれている場合、コンパイル後は1つのファイルとなり、2つのファイルのグローバル静的変数は共通であり、externで宣言する必要はありません.
じょうけんコンパイル定数式が真である場合、文ブロック がコンパイルされるにはelse分岐もあり、if else と同様に使用することができる.個人的にはあまり使われていないような気がしますが、以下はよく使われています~ #ifdefおよび#ifndefコマンド の前の#ifコマンドは、符号定数で定義された具体的な値を判断する必要があるが、具体的な値を判断する必要がなく、符号が定義されているかどうかを知る必要がある場合がある.
#ifndefと類似 実際の開発では、ヘッダファイルが を含むことを防止するために、このような使い方がしばしば遭遇する. #line LINEとFILEの内容を変更するために使用され、主にデバッグに使用され、言わないでください.
#pragmaコマンド は、コンパイラの状態を設定、または、コンパイラに特定の動作 の完了を指示する役割を果たす.の後に続くパラメータ: message:コンパイル情報出力ウィンドウに対応する情報 を出力する. code_seg:プログラムに関数コードが格納されているコードセグメントを設定します. once:ヘッダファイルがコンパイルされることを保証します.ヘッダファイルの最初の行はpragma once です.これは上の#ifndef機能と似ていますか?彼らにはいくつかの違いがあります.しかし、私が言いたいのは、上の#ifndef方式はc++標準サポート方式で、コードのプラットフォーム移植に便利です.これは、コンパイラサポートの、移植コードは顔次第です.**
小记:この文章は私がc++プログラミング実戦(清华大学出版社)を见て整理したもので、上记の间违いがあるところを指摘してください.
パラメータなしのマクロ定義
#define PI 3.14
#
これが前処理コマンドであることを示します
PI
マクロ名、識別子
3.14
マクロ名に代わる真の値である文字列
*プリプロセッシングのコンパイルでは、PIに遭遇するたびに自動的に3.14に置き換えられます.*注意:プログラムに表示される文字列にマクロ名が含まれている場合は置き換えません*マクロ定義の役割ドメインをundefで終了できます
#define TEST "test"
int main()
{
printf(TEST);
#undef TEST
}
パラメータ付きマクロ定義
#define MAX(a,b) ((a>b)?(a):(b))
#includeコマンド
#include "stdio.h"
#include
じょうけんコンパイル
#if
#endif
int main()
{
int NUM=40;
int i = 0;
#if NUM>20
i++;
#endif
}
int main()
{
int NUM=40;
int i = 0;
#if NUM>20
i++;
#else
i--;
#endif
}
int main()
{
int NUM=40;
int i = 0;
#if NUM>20
i++;
#elif NUM>10
i--;
#elif NUM>0
i+=2;
#endif
}
#ifdef USE_TEST_DLL
1
#else
2
#endif
// USE_TEST_DLL, 1; , 2.
#ifndef _TEST_ADD_H_
#define _TEST_ADD_H_
#else
...
#endif
小记:この文章は私がc++プログラミング実戦(清华大学出版社)を见て整理したもので、上记の间违いがあるところを指摘してください.