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