C語言簡明講解預(yù)編譯的使用
小復(fù)習(xí)
預(yù)處理,預(yù)編譯是編譯的第一步。
會有三件基本的事情發(fā)生:
- 引入#include
- 去除注釋
- 修改#define
1、內(nèi)置符號
這些符號都可以直接使用:
__FILE__ 點c文件全名
__LINE__ 當(dāng)前行號
__DATE__ 編譯日期
__TIME__ 編譯時間
舉例:
#include<stdio.h> int main() { printf("文件全名:%s\n", __FILE__); printf("當(dāng)前運行行號:%d\n", __LINE__); printf("編譯日期:%s\n", __DATE__); printf("編譯時間:%s\n", __TIME__); return 0; }
效果:
2、自定義符號
#define 名 值
不帶分號。預(yù)編譯階段,所有名字會被值替換。
舉例:給printf取個別名。
#include<stdio.h> #define say printf int main() { say("你好,世界!\n"); return 0; }
效果:
舉例:自定義一個死循環(huán)符號。
#include<stdio.h> #define loop while(1) int main() { int i = 0; loop{ if (i > 1000) { break; } else { printf("你好,世界!\t%d\n",i); i++; } } return 0; }
效果:
3、自定義宏
和自定義符合差不多。
相當(dāng)于函數(shù),只不過在預(yù)編譯的階段就會執(zhí)行。
然后替換掉。
#define 名 ( 參數(shù)列表 ) 表達(dá)式
舉例:輸出字符串。
#include<stdio.h> #define say(s)printf(s) int main() { say("你好,世界!\n"); return 0; }
效果:
替換邏輯:遞歸。
看參數(shù)有沒有define,有就套娃。
直到?jīng)]有,替換自己。
字符串內(nèi)部的符號會被忽略。
4、條件編譯
可以用#define定義一個符號,代表是否要執(zhí)行。
#include<stdio.h> #define __DEBUG__ 1 int main() { if (__DEBUG__) { printf("調(diào)試模式開啟\n"); } else { printf("調(diào)試模式關(guān)閉\n"); } return 0; }
效果:
同時,可以讓這段代碼直接跳過編譯。
#include<stdio.h> #define __DEBUG__ 1 int main() { #if __DEBUG__ printf("調(diào)試模式開啟\n"); #endif return 0; }
這種寫法也有配套的選擇分支。
#include<stdio.h> #define __DEBUG__ 0 #define __WARN__ 1 int main() { #if __DEBUG__ printf("調(diào)試模式\n"); #elif __WARN__ printf("警告模式\n"); #else printf("正常模式\n"); #endif return 0; }
效果:
到此這篇關(guān)于C語言簡明講解預(yù)編譯的使用的文章就介紹到這了,更多相關(guān)C語言預(yù)編譯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c++中數(shù)字與字符串之間的轉(zhuǎn)換方法(推薦)
下面小編就為大家?guī)硪黄猚++中數(shù)字與字符串之間的轉(zhuǎn)換方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09簡要說明C語言中指針函數(shù)與函數(shù)指針的區(qū)別
這篇文章主要介紹了C語言中指針函數(shù)與函數(shù)指針的區(qū)別,指針函數(shù)和函數(shù)指針是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2016-04-04一文帶你快速了解C/C++標(biāo)準(zhǔn)庫中的ptrdiff_t
ptrdiff_t是C/C++標(biāo)準(zhǔn)庫中定義的一個與機器相關(guān)的數(shù)據(jù)類型,ptrdiff_t類型變量通常用來保存兩個指針減法操作的結(jié)果,下面這篇文章主要給大家介紹了關(guān)于C/C++標(biāo)準(zhǔn)庫中ptrdiff_t的相關(guān)資料,需要的朋友可以參考下2022-11-11簡單掌握C++編程中的while與do-while循環(huán)語句使用
這篇文章主要介紹了C++編程中的while與do-while循環(huán)語句使用,區(qū)別就是while是先判斷再執(zhí)行,而do-while是先執(zhí)行再判斷,需要的朋友可以參考下2016-01-01