Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C /C++プリプロセッサディレクティブ


CまたはC++では、(#)記号で始まるさまざまな行が見つかりました。これらは前処理ディレクティブと呼ばれます。これらの行は、コードをコンパイルする前に前処理フェーズで処理されます。ここでは、3つの異なるタイプの前処理ディレクティブが表示されます。これらは-

です
  • 条件付きコンパイル
  • ラインコントロール
  • エラーディレクティブ

プログラムでいくつかのマクロを定義することがあります。条件付きコンパイルディレクティブの使用。マクロが定義されているかどうかを確認できます。それらを制御することもできます。したがって、1つのマクロが定義されている場合は、いくつかのタスクを実行します。それ以外の場合は、そのような他のタスクを実行します。

条件付きコンパイルディレクティブは、#ifdef-#elif-#else-#endifのようなものです。すべての#ifdefブロックは#endifで終了する必要があります。 #elifまたは#elseはオプションです。

#include <iostream>
#define MY_MACRO 10
using namespace std;
int main() {
   #ifdef MACRO
   cout << "MACRO is defined" << endl;
   #elif MY_MACRO
   cout << "MY_MACRO is defined, value is: " << MY_MACRO;
   #endif
}

出力

MY_MACRO is defined, value is: 10

行制御ディレクティブは、#lineと入力して使用します。優先行番号でエラーが発生することがあります。このディレクティブを使用して行番号を更新できます。これを配置して現在の線を200に変更すると、その後、線は201から移動します。

#include <iostream>
using namespace std;
int main() {
   cout<< "Current line is: " << __LINE__ << endl;
   #line 200
   cout << "Hello" << endl;
   cout << "World" << endl;
   cout<< "Current line is: " << __LINE__ << endl;
}

出力

Current line is: 5
Hello
World
Current line is: 202

errorディレクティブは、コンパイル前にエラーを表示するために使用されます。 1つのマクロを定義する必要があると仮定しますが、それが定義されていない場合は、エラーメッセージを表示できます。これは、#errorを使用して実行できます。

#include <iostream>
using namespace std;
int main() {
   #ifdef MY_MACRO
   cout << "MY_MACRO is defined, value is: " << MY_MACRO;
   #else
   #error MY_MACRO should be defined
   #endif
}

出力

#error MY_MACRO should be defined

  1. C / C ++のmemcpy()

    この記事では、C ++ STLでのmemcpy()関数の動作、構文、および例について説明します。 memcpy()とは何ですか? memcpy()関数は、C ++ STLに組み込まれている関数であり、ヘッダーファイルで定義されています。 memcpy()関数は、メモリのブロックをコピーするために使用されます。この関数は、あるメモリ位置から別のメモリ位置に値の数をコピーするために使用されます。 関数の結果は、データのバイナリコピーです。この関数は、終了ソースまたは終了ヌル文字をチェックせず、ソースからnumバイトをコピーするだけです。 例 void memcpy( void* destin

  2. C / C ++のAAツリー?

    コンピュータサイエンスのAAツリーは、順序付けられたデータを効率的に保存および取得するために実装されたバランスの取れたツリーの形式として定義されます。 AAツリーは、エントリの効率的な追加と削除をサポートするバイナリ検索ツリーの形式である赤黒ツリーのバリエーションとして扱われます。赤黒木とは対照的に、AAツリーの赤いノードは、左のサブチャイルドではなく、右のサブチャイルドとしてのみ追加できます。この操作の結果、2-3-4ツリーではなく2-3ツリーのシミュレーションが行われるため、メンテナンス操作が簡素化されます。赤黒木のメンテナンスアルゴリズムでは、ツリーのバランスを適切にとるために、7つの異