マクロ2

#include <stdio.h>

#define ringo apple


int main(void){

int ringo=100;

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

return 0;

}


コンパイル結果

100


アレサ「


さて、このプログラムのように


マクロの定義

#define ringo appleにより


ringoと記述されたら


appleと記述されたことになるのでした。


では


次のプログラムではどうなりますのでしょうか?


#include <stdio.h>

#define ringo apple


int main(void){

int ringo1=100;

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

return 0;

}


コンパイル結果

apple1が定義されていません。


もうひとつ


#include <stdio.h>

#define ringo apple


int main(void){

int ringoringo=100;

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

return 0;

}


コンパイル結果

appleappleが定義されていません


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


ringo1, ringoringoともに1つの単語とみなされ


ringoの部分だけをappleに変換することはできません😊。


そのため

apple1やappleappleはringo1, ringoringoとは別の変数とみなされますが


apple1やappleappleは変数宣言して 定義されていないため


コンパイルエラーがでてくるんですの。」


ソーラー「なるほど


マクロの定義


#define ringo apple


により、ringoと記述されたらappleと記述されたとみなす


といっても


なんでもかんでもringo⇨appleに


かきかえられるわけではないんだね。」


アレサ 「そうなんです


もう1つ例をお示しします^^


#include <stdio.h>

#define ringo apple


int main(void){

printf("ringo\n");

return 0;

}


コンパイル結果

ringo


このようにprintf文の"  "内に記述された


文字列ringo


もappleに変更することができないのです。」


ソーラー 「まあ、printf文の"  "内には文章がかかれるわけだから


ringoがappleに変わらないほうがいいのかな?


printf文の"  "内に


ringoはローマ字です


とかきこまれていたら


appleはローマ字です


にかわっちゃうもんね。」


アレサ「今日は かき氷をお持ちいたしましたですの」


ソーラー「いやあ、ナイスタイミング、今日はとても暑いね」


アレサ「こちらの木陰にご用意いたしております」


鮮やかな緑の木陰の中に


白いテーブルとイスが用意されている


光と影の部分のコントラストがくっきりと浮かび上がっている。


アレサ「はい、こちらへ・・・


木陰で涼みながら マクロの仕組みをもう少し


ご説明いたしますですの」






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

作者を応援しよう!

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

応援したユーザー

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