C言語のきほん「条件付きコンパイル」

スポンサーリンク
C言語

プリプロセッサへの#ifdef~#endif命令、または、#ifdef~#else~#endif命令によって、コンパイルする内容を条件分岐させることができる。

#ifdef マクロ名
    プログラムコード
#endif

上記のようにマクロ名が定義されている場合、#ifdef~#endifに囲まれた範囲のプログラムコードがコンパイル範囲となる。
これで、マクロの定義によって、コンパイル対象となるプログラムコードを切り替えることができる。
これを「条件付きコンパイル」という。

さっそく、プログラムで例をみてみよう。

なお、本プログラムは、Windows 11 Home(23H2)上で、 
 Visual Studio Code(1.91.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0で コンパイルしている。

//条件付きコンパイルの例

#include <stdio.h>
#define ADDRESS_CHECK

int main(void)
{
        int a;

        printf("整数を入力してください:");
        scanf("%d",&a);

    #ifdef ADDRESS_CHECK
        printf("この値のアドレスは%pです。\n",&a);
    #endif
        printf("この値は%dです。\n",a);
    
    return 0;
}

実行結果

整数を入力してください:10
この値のアドレスは0x7ffc7752a824です。
この値は10です。

#ifdef ADDRESS_CHECK~#endifで囲まれたプログラムコードは、ADDRESS_CHECKというマクロ名が定義されているので、コンパイルの対象となっている。

なお、#ifdef~#endif命令の間に#else命令を入れて、さらに分岐させることができる。

#ifdef マクロ名
    プログラムコード1
#else
        プログラムコード2
#endif

参考)「C言語 新版 ゼロからはじめるプログラミング」 三谷 純 (著) 翔泳社

コメント

タイトルとURLをコピーしました