c語言教程1之預定義代碼
大家好,我是愛學編程的小圓子,
上一篇我覺得稀里扒拉的,根本沒講到重點,所以我又來詳細講一次啦,
前言
一些新手看到一些大佬的代碼,里面可能第一句就是#include<....>,很多新手看不懂是什么,可能還有一些#define #ifdef #if #endif #else ....等等像這種帶#符號的代碼這些代碼在c標準里面都叫預定義代碼,
那什么是預定義代碼呢?
預定義代碼就是在預編譯階段編譯的代碼,至于編譯程序限于篇幅我就不贅述了
首先我們來看一個例子
-----我是分界線-----
#define A = 10
int a = A + A;
-----我是分界線-----
編譯器會看成
-----我是分界線-----
int a = 10 + 10;
-----我是分界線-----
#define被略掉了
那有的時候用預編譯代碼是很好的,有的時候他可以省略可執行檔案所占用的記憶體
就比如
-----我是分界線-----
#ifdef MAKE
printf("MAKE is define.");
#else
printf("MAKE isn't define.");
#endif
-----我是分界線-----
如果定義了MAKE符號那編譯器就會編譯第一個printf,如果沒有定義MAKE符號就會編譯第二個printf,
劃重點!:#define是定義符號 #ifdef是if is define也就是判斷有沒有定義這個符號#ifndef是#ifdef的反義代碼 #elif 和 else if(...)同義但是#elif就是編譯時判斷else if()是運行時判斷#else參考上面
學習
#define AA 1
#define BB 2
int main()
{
int a = AA + BB;
}
按照上面的原理,編譯器看到的就是
int main()
{
int a = 1 + 2;
}
來個更深奧點的:
//default.h
#ifndef A
#defif B
#define b
#else
#define bb
#endif //#defif B
#define bbb
#else
#define aaaa
#endif //#ifndef A
//default.c
int main()
{
#define A
#include"default.h"
}
編譯的時候就會:
第一步:
int main()
{
#define A
#ifndef A
#defif B
#define b
#else
#define bb
#endif
#define bbb
#else
#define aaaa
#endif
}
第二步:
int main()
{
#define aaaa
}
那我再弄一個:
int main()
{
#define B
#include"default.h"
}
第一步:
int main()
{
#define B
#ifndef A
#defif B
#define b
#else
#define bb
#endif
#define aaa
#else
#define aaaa
#endif
}
第二步:
int main()
{
#define b
#define aaa
}
有什么疑惑可以在評論區跟我說,我會盡快回答
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/252916.html
標籤:其他
下一篇:方法多載與可變引數與遞回
