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

C/C++プログラムのソースコードからプリプロセッサコードを生成する方法

この記事では、C言語やC++のソースコードから、プリプロセス済み(プリプロセッサ)コードを生成して確認する方法を解説します。

g++コンパイラを使用してプリプロセス後のコードを出力するには、「-E」オプションを付けてコンパイルします。このオプションを指定すると、コンパイルやアセンブルは行われず、プリプロセッサが処理した結果だけが標準出力に出力されます。

プリプロセッサは、コード内に含まれるすべての「#」で始まるディレクティブ(#include や #define など)を処理し、さらにマクロ関数もすべて展開します。そのため、ヘッダファイルの中身まで含めた膨大なコードが出力されることもあります。

構文

g++ -E program.cpp

使用例

まず、次のような簡単なC++プログラムを用意します。

#define PI 3.1415
int main() {
    float a = PI, r = 5;
    float c = a * r * r;
    return 0;
}

実行結果

上記のコードに対して「-E」オプションを付けて実行すると、以下のようにマクロ「PI」が実際の値「3.1415」に置き換えられていることが確認できます。

$ g++ -E test_prog.cpp
int main() {
    float a = 3.1415, r = 5;
    float c = a * r * r;
    return 0;
}

このように、プリプロセス済みコードを確認することで、マクロがどのように展開されているのか、ヘッダファイルがどのように読み込まれているのかを把握でき、デバッグやコンパイルエラーの原因調査にも役立ちます。

  1. C/C++でn番目のカタラン数を求めるプログラム

    カタラン数(Catalan numbers)とは、組み合わせ論におけるさまざまな数え上げ問題に現れる自然数の数列です。特に、再帰的に定義される対象の個数を数える場面で頻繁に登場することで知られています。カタラン数の主な性質ディック語(Dyck word)との関係Cn は、長さ 2n のディック語の総数を表します。ディック語とは、n 個の X と n 個の Y から構成され、文字列のどの先頭部分を見ても Y の数が X の数を超えない文字列のことです。例えば、長さ 6 のディック語は次の通りです。XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY.正しい括弧の対応付けX を開き

  2. 摂氏を華氏に変換するC++プログラム

    この記事では、C++を使って摂氏(℃)の温度を華氏(℉)に変換するプログラムを紹介します。摂氏から華氏への変換は、次のシンプルな数式で行えます。 F = (9 × C ÷ 5) + 32 ここで、Cは摂氏温度、Fは華氏温度を表します。例えば、摂氏37度は華氏98.6度に相当し、これは人間の平熱に近い値です。 アルゴリズム 処理の流れは以下の通りです。 開始  摂氏温度Cを入力する  F = (9C/5) + 32 を計算する  結果Fを返す 終了 サンプルコード #include<iostream> using namespace std; int main() {