プリプロセッサの1つ マクロ をご紹介いたします

ソーラー 「さあ、プリプロセッサの説明をしてみようじゃないか」


アレサ「はいっ


プリプロセッサとは


#include <stdio.h>のような


#をもちいて他の命令文よりも 


先によみこまれる処理のことをあらわしています。


Pre(前の)

Process (処理)

というわけです


例えば


#include <stdio.h>をプログラムの先頭に記述することにより


ヘッダファイル<stdio.h>がよみこまれ


printf関数やscanf関数

fprintf関数やfscanf関数

fwrite関数やfread関数

など


が使用できるようになるのでした。」


ソーラー「他にもプリプロセッサとは 


プログラムを読み込んで


作動することができる機械という意味もあります。」


アレサ「


#をもちいて他の命令文よりも 先によみこまれる処理


=プリプロセッサ


には様々な種類がありますの


C言語内で


#をもちいて他の命令文よりも 先によみこまれる処理


=プリプロセッサ


には、代表的なものとしては


#include <stdio.h>であらわされるように


#include を用いてヘッダファイルを読み込み


ヘッダファイルの中に格納されているプログラムを使用可能にする


というものがあります。


さらに

プリプロセッサには


マクロ


条件付きコンパイル


などがありますが


まず、


マクロからみていきましょうね、


ソーラーさん」


ソーラー「マックスの大好きなマグロのことなんだね。」


アレサ「お魚のマグロのことではありませんの」


ソーラー「よしきた 頼むよ~アレサ」


アレサ 「マクロとは


ringo と記述したらappleを記述したとみなすように


○○と記述したら☆☆を記述したとみなすような

 

処理をあらわしています。


具体例を示しながら見ていくと


  #define ringo appleとマクロの定義を記述することにより


プログラム内の


ringoはappleとみなされます。


#define ringo appleをもちいたプログラムを構成すると次のようになります。


#include <stdio.h>

#define ringo apple

/*ここで


ringoと記述されたらappleとみなされるよう


マクロの定義がおこなわれています*/


int main(void){

int ringo=100;

printf("%d\n",apple);

return 0;

}


プログラムの実行結果


100


アレサ「このプログラムでは


ringoと記述すれば appleを記述したとみなされるので


int ringo=100;

int apple=100;

と等しくなり


コンパイル結果は

100となります。


ソーラー

「ringoと記述すればappleと記述したことみなされるので


#include <stdio.h>

#define ringo apple


int main(void){

int ringo=100;

printf("%d\n",ringo);

return 0;

}


と記述しても

プログラムの実行結果は

100


になるんだよね。」


アレサ「はい ソーラーさんのこのプログラムをみると


int ringo=100;

と ringoの変数宣言

がおこなわれて

変数ringoが生成され、初期化がおこなわれたように


みえます💖💖💖💖💖が、

🌊🌊🌊

solarplexuss


(いまさらですが 初期化とは 数値や文字データの入れ物,


この場合、変数ringoに 値を代入することでした)

🌊🌊🌊


#define ringo appleにより


ringoと記述すればappleと記述したとみなされるので


実際には


ringoという変数は存在せず


コンピュータにとっては


appleという変数だけが存在することになります。」


ソーラー「まくろって 簡単じゃないか😊」


アレサ「はいっ とっても簡単ですの」


(ちょっと解説


#include <stdio.h>

#define ringo apple


int main(void){

int ringo=100;

printf("%d\n",ringo);

return 0;

}


のソースコードの実行においては



#define ringo apple


という


プリプロセッサ(前処理)


が実行されると


ソースコードのこの部分

👇

int main(void){

int ringo=100;

printf("%d\n",ringo);

return 0;

}


int main(void){

int apple=100;

printf("%d\n",apple);

return 0;

}


に変換(前処理)されてから


コンパイルがおこなわれるというわけです


                     solarplexussより

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る