[C言語]プリプロセッサ


1.ファイルプリプロセッサ

  • #includeは、フロントプロセッサで最も一般的な構文
  • です.
  • を使用してライブラリに特定のファイルを含める
    include構文にインポートできるファイルには制約はありません.
  • #include<ファイル名>
  • システムディレクトリでファイル
  • を検索する
  • オペレーティングシステムごとに異なるシステムディレクトリパス
  • がある場合があります.
  • の代表的なstdio.システムディレクトリには
  • ヘッダファイル、例えばh
    C言語コンパイラ構築時, などの各種ライブラリは、私たちのコンピュータ内のシステムディレクトリに含まれており、そこからファイルを検索し、プログラムに格納します.
    #include“ファイル名”
  • まず現在のフォルダでファイル
  • を検索する.
  • 現在のフォルダにファイルがない場合、システムディレクトリでファイル
  • を検索する.

    2.化粧前プロセッサー

  • を使用して、プログラムで使用される定数または関数をマクロとして保存します.
  • define構文を使用して
  • を定義できます.
  • #define構文は、ソースコードの量を大幅に削減するのに役立ちます.
    #define PI 3.1415926535
    
    int main(void) {
    	int r = 10; // 원의 반지름
    	printf("원의 둘레: %.2f\n", 2 * PI * r);
    	system("pause");
    	return 0;
    }
    #define POW(x) (x * x)
    
    int main(void) {
    	int x = 10;
    	printf("x의 제곱: %d\n", POW(x));
    	system("pause");
    	return 0;
    }
  • パラメータを有するマクロプリプロセッサ
  • #define ll long long
    #define ld long double
    
    int main(void) {
    	ll a = 23465390234;
    	ld b = 134.5939;
    	printf("%.1f\n", a * b);
    	system("pause");
    	return 0;
    }

    3.条件付きコンパイル

  • #ifndef (if not define)
  • #endif (end if)
  • #ifndef _TEMP_H_
    #define _TEMP_H_
    
    int add(int a, int b) {
    	return a + b;
    }
    
    #endif
    #ifndefを使用してヘッダファイルを定義する場合
    重複するヘッダファイル(下図のように)が正常に動作する
    #define _CRT_SECURE_NO_WARNINGS 
    #include <stdio.h> 
    #include "temp.h"
    #include "temp.h"
    
    int main(void) {
    	printf("%d\n", add(5, 3));
    	system("pause");
    	return 0;
    }

    4.ファイル分割コンパイル


    main.c C言語ファイル
    #include <stdio.h> 
    #include "temp.h"
    
    int main(void) {
    	printf("%d\n", add(50, 30));
    	system("pause");
    	return 0;
    }
    temp.hヘッダファイル
    :関数のみの定義
    #ifndef _TEMP_H_
    #define _TEMP_H_
    
    int add(int a, int b);
    
    #endif
    temp.c C言語ファイル
    : temp.hファイル定義
    #include "temp.h"
    
    int add(int a, int b) {
    	return a + b;
    }