溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言預(yù)編譯怎么使用

發(fā)布時間:2022-05-05 09:34:41 來源:億速云 閱讀:115 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“C語言預(yù)編譯怎么使用”的相關(guān)知識,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“C語言預(yù)編譯怎么使用”文章能幫助大家解決問題。

1、內(nèi)置符號

這些符號都可以直接使用:

__FILE__            點(diǎn)c文件全名
__LINE__            當(dāng)前行號
__DATE__            編譯日期
__TIME__            編譯時間

舉例:

#include<stdio.h>
int main() {
	printf("文件全名:%s\n", __FILE__);
	printf("當(dāng)前運(yùn)行行號:%d\n", __LINE__);
	printf("編譯日期:%s\n", __DATE__);
	printf("編譯時間:%s\n", __TIME__);
	return 0;
}

效果:

C語言預(yù)編譯怎么使用

2、自定義符號

#define 名 值

不帶分號。預(yù)編譯階段,所有名字會被值替換。

舉例:給printf取個別名。

#include<stdio.h>
#define say printf
int main() {
	say("你好,世界!\n");
	return 0;
}

效果:

C語言預(yù)編譯怎么使用

舉例:自定義一個死循環(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;
}

效果:

C語言預(yù)編譯怎么使用

3、自定義宏

和自定義符合差不多。

相當(dāng)于函數(shù),只不過在預(yù)編譯的階段就會執(zhí)行。

然后替換掉。

#define 名 ( 參數(shù)列表 ) 表達(dá)式

舉例:輸出字符串。

#include<stdio.h>
#define say(s)printf(s)
int main() {
	say("你好,世界!\n");
	return 0;
}

效果:

C語言預(yù)編譯怎么使用

替換邏輯:遞歸。

看參數(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;
}

效果:

C語言預(yù)編譯怎么使用

同時,可以讓這段代碼直接跳過編譯。

#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;
}

效果:

C語言預(yù)編譯怎么使用

關(guān)于“C語言預(yù)編譯怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點(diǎn)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI