C++ __FILE__ マクロ

C File Makuro



マクロは、特定の名前を持つスクリプト内のコードの一部です。いずれかのマクロが実行されると、その背後にあるコードが実行されて特定のタスクが実行されます。そのように、__FILE__ は、特定のファイルへのパスを取得するために C++ 言語内で使用されるマクロです。したがって、今日このガイドでは、C++ __FILE__ マクロの動作について説明します。

例 01:

ターミナル コンソール アプリケーションを起動して、C++ の __FILE__ マクロの最初の例を見てみましょう。ショートカット「Ctrl+Alt+T」を使用している可能性があります。シェルを開くもう 1 つの方法は、ショートカット キーを忘れた場合にメニューの [アクティビティ] 領域を使用することです。端末コンソールが画面上で起動されたら、コードを実行する新しい c++ ファイルを作成してみてください。下の添付画像に示すように、単純な「タッチ」クエリでファイルを作成できます。新しく作成されたファイルの名前は、「touch」キーワードで指定する必要があります。







Ubuntu 20.04 Linux システムにエディターをインストールして、新しく作成されたファイルをコーディングして開くために使用する必要があります。 Linux ユーザーの間で広く知られている最も推奨されるエディターは、GNU Nano および Vim エディターです。それ以外に、前述のエディターが両方とも機能しない場合は、テキスト エディターを利用することもできます。したがって、GNU Nano エディターは既にインストールされています。したがって、それを使用してファイルを開いて編集し、コードを作成します。ファイル名とともに「nano」キーワードを使用して、エディターを機能させます。





これで、新しく作成された C++ ファイル macro.cc をエディターでコーディングする準備が整いました。 __FILE__ マクロの動作を確認するためにこの記事を実装しているので、C++ コードの実装を開始しましょう。 C++ コードの先頭に標準の入出力ヘッダーを追加することから始めました。そうするために、ハッシュ記号とともにキーワード「include」が使用されています。このヘッダーがないと、C++ コードの入出力は、コンパイルおよび実行時にコンソールで機能しません。





main() メソッドは、実行がそこから開始され、そこで終了するため、コードの基本的な柱です。 main() メソッド内で、実際の作業が行われます。 __FILE__ マクロの機能を説明するために、main() メソッドで 1 行のコードを使用しています。そのため、ここでは printf ステートメントが使用され、2 つの値を引数として取ります。つまり、ファイル名とマクロ関数を取る文字列です。

ここでは __FILE__ マクロを使用して、現在のファイル パスまたはその名前を取得します。 「%S」は、ファイルの現在のパスまたは文字列内のその名前を出力するために使用されます。 「Ctrl+S」ショートカットを使用して、実行前にコードを保存する必要があります。これでコードが保存されました。「Ctrl+X」ショートカットを使用してシェル ターミナルに戻ってみてください。



__FILE__ マクロの C++ コードが完成したので、C++ コードのコンパイルを始めましょう。コンパイルのために、C++ コードをコンパイルするための g++ コンパイラが既にインストールされています。そのため、ターミナルで g++ コンパイラを使用して、ファイル「macro.cc」をコンパイルしました。コンパイル時には何も返されません。これは、C++ コードが macro.cc ファイル内にあり、意味的に正しいことを示しています。コンパイルが終わると、コードの実行に移ります。コード ファイルを実行するには、「./.aout」という単純なクエリを使用する傾向があります。ファイル macro.cc を実行すると、返されたファイルの名前が返されます。これは、C++ __FILE__ マクロがどのように機能するかです。

例 02:

Ubuntu 20.04 システム内の C++ __FILE__ マクロの機能を詳しく調べる別の例を見てみましょう。 C++ __FILE__ マクロが言及されているファイルのファイル パスを取得するために使用された場合に、そのマクロがどのように機能するかを見てきました。

ここで、C++ __FILE__ マクロを使用して、現在作業中のファイル以外のファイル パスまたはファイル名を取得します。そのため、コードを更新するために GNU Nano エディターで同じファイル macro.cc を開きました。 include キーワードを使用して標準の入出力ヘッダーを追加し、整数の戻り値の型で main() 関数を初期化しました。

main() メソッド内で、最初の print ステートメントは古いものと同じで、現在作業中の現在のファイル パスを取得します。その後、次の連続する行で #line キーワードを別のファイル名、つまり「new.txt」で使用しました。これは、名前またはパスを取得する現在のファイル以外のファイルを指定するためです。次の printf ステートメントは、C++ __FILE__ マクロを使用して、ファイル「new.txt」のパスを出力するために利用されています。コンパイル時の不都合を避けるために、新しく更新したコードを保存します。そのためには「Ctrl+S」を使用します。

更新したファイルを保存したら、キーボードから「Ctrl+X」で終了します。さて、シェル画面に戻りました。

更新されたファイルをコンパイルしましょう。 g++ コンパイラを使用して、ファイル macro.cc の名前でこれを行います。コンパイルが成功したら、コンソールで「./a.out」コマンドを使用してコードを実行します。出力には、最初に現在のファイルへのパスが表示され、次に別のファイルへのパス「new.txt」がシェル画面に表示されています。 __FILE__ マクロを使用してシェルにファイル パスを表示するのがどれほど簡単か見てください。

例 03:

C++ の __FILE__ マクロと一緒に __LINE__ マクロを見てみましょう。 __LINE__ マクロは、マクロが使用されたファイルの行番号を表示します。したがって、同じファイルを開き、両方の printf ステートメントを更新します。 C++ __LINE__ マクロの前に、C++ __LINE__ マクロを追加しました。この __LINE__ マクロは、__FILE__ が最初に来る現在のファイルの行番号を取得しています。次の __LINE__ マクロは、他のファイルの最初の行番号を取得します。これは、コード内のファイル名で行番号を既に言及しているためです。

ファイルを保存して終了すると、シェル ターミナルに戻ります。同じ g++ コマンドを使用して、C++ macro.cc ファイル コードをコンパイルしています。コンパイルが成功すると、実行コマンドが表示されます。ここで「./a.out」コマンドを使用してこれを行います。実行により、最初のファイル、つまり 3 行目の現在のファイルが示されますが、__FILE__ マクロはコードで言及されている他のファイルの最初の行にあります。

結論:

この記事には、マクロの定義が含まれており、Ubuntu 20.04 システムでの C++ __FILE__ マクロの使用法について説明しています。 C++ __LINE__ マクロは、C++ __FILE__ マクロの動作をさらに説明するために、いくつかの例で説明されています。要約すると、この記事が C++ の __FILE__ マクロを最大限に活用するのに役立つことを願っています。