條件編譯
預(yù)處理程序提供了條件編譯的功能,可以按不同的條件去編譯不同的程序部分,因而產(chǎn)生不同的目標(biāo)代碼文件,這對于程序的移植和調(diào)試是很有用的。條件編譯可分為三種形式。
第一種形式如下:
#ifdef 標(biāo)識符 程序段 1 #else 程序段 2 #endif
它的功能是如果標(biāo)識符已被#define命令定義過則對程序段1進行編譯;否則對程序段2進行編譯。
如果沒有程序段2(為空),本格式中的#else可以沒有,即可以寫為:
#ifdef 標(biāo)識符 程序段 #endif
第二種形式如下:
#ifndef 標(biāo)識符 程序段 1 #else 程序段 2 #endif
與第一種形式的區(qū)別是將“ifdef”改為“ifndef”。它的功能是如果標(biāo)識符未被#define命令定義過則對程序段1進行編譯,否則對程序段2進行編譯。這與第一種形式的功能正好相反。
第三種形式如下:
#if 常量表達式 程序段 1 #else 程序段 2 #endif
它的功能是如果常量表達式的值為真(非0),則對程序段1進行編譯,否則對程序段2進行編譯。
因此可以使程序在不同的條件下完成不同的功能。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導(dǎo)課程