是C語(yǔ)言。
ifthenendif宏定義的一種,它可以根據(jù)是否已經(jīng)定義了一個(gè)變量來(lái)進(jìn)行分支選擇,一般用于調(diào)試等等.實(shí)際上確切的說(shuō)這應(yīng)該是預(yù)處理功能中三種(宏定義,文件包含和條件編譯)中的一種----條件編譯。C語(yǔ)言在對(duì)程序進(jìn)行編譯時(shí),會(huì)先根據(jù)預(yù)處理命令進(jìn)行“預(yù)處理”。C語(yǔ)言編譯系統(tǒng)包括預(yù)處理,編譯和鏈接等部分。
條件指示符#ifndef的最主要目的是防止頭文件的重復(fù)包含和編譯。了解:條件編譯當(dāng)然也可以用條件語(yǔ)句來(lái)實(shí)現(xiàn)。但是用條件語(yǔ)句將會(huì)對(duì)整個(gè)源程序進(jìn)行編譯,生成的目標(biāo)代碼程序很長(zhǎng),而采用條件編譯,則根據(jù)條件只編譯其中的程序段1或程序段2,生成的目標(biāo)程序較短。如果條件選擇的程序段很長(zhǎng),采用條件編譯的方法是十分必要的。
千萬(wàn)不要忽略了頭文件中的#ifndef,這是一個(gè)很關(guān)鍵的東西。比如你有兩個(gè)C文件,這兩個(gè)C文件都include了同一個(gè)頭文件。而編譯時(shí),這兩個(gè)C文件要一同編譯成一個(gè)可運(yùn)行文件,于是問題來(lái)了,大量的聲明沖突。
在c語(yǔ)言中,對(duì)同一個(gè)變量或者函數(shù)進(jìn)行多次聲明是不會(huì)報(bào)錯(cuò)的。所以如果h文件里只是進(jìn)行了聲明工作,即使不使用#ifndef宏定義,一個(gè)c文件多次包含同一個(gè)h文件也不會(huì)報(bào)錯(cuò)。
但是在c++語(yǔ)言中,#ifndef的作用域只是在單個(gè)文件中。所以如果h文件里定義了全局變量,即使采用#ifndef宏定義,一個(gè)c文件包含同一個(gè)h文件多次還是會(huì)出現(xiàn)全局變量重定義的錯(cuò)誤。
使用#ifndef可以避免下面這種錯(cuò)誤:如果在h文件中定義了全局變量,一個(gè)c文件包含同一個(gè)h文件多次,如果不加#ifndef宏定義,會(huì)出現(xiàn)變量重復(fù)定義的錯(cuò)誤;如果加了#ifndef,則不會(huì)出現(xiàn)這種錯(cuò)誤。
C語(yǔ)言主要特點(diǎn):
1、簡(jiǎn)潔的語(yǔ)言。
C語(yǔ)言包含的各種控制語(yǔ)句僅有9種,關(guān)鍵字也只有32個(gè),程序的編寫要求不嚴(yán)格且以小寫字母為主,對(duì)許多不必要的部分進(jìn)行了精簡(jiǎn)。實(shí)際上,語(yǔ)句構(gòu)成與硬件有關(guān)聯(lián)的較少,且C語(yǔ)言本身不提供與硬件相關(guān)的輸入輸出、文件管理等功能,如需此類功能,需要通過(guò)配合編譯系統(tǒng)所支持的各類庫(kù)進(jìn)行編程,故c語(yǔ)言擁有非常簡(jiǎn)潔的編譯系統(tǒng)。
2、具有結(jié)構(gòu)化的控制語(yǔ)句。
C語(yǔ)言是一種結(jié)構(gòu)化的語(yǔ)言,提供的控制語(yǔ)句具有結(jié)構(gòu)化特征,如for語(yǔ)句、if...else語(yǔ)句和switch語(yǔ)句等。可以用于實(shí)現(xiàn)函數(shù)的邏輯控制,方便面向過(guò)程的程序設(shè)計(jì)。
3、豐富的數(shù)據(jù)類型。
C語(yǔ)言包含的數(shù)據(jù)類型廣泛,不僅包含有傳統(tǒng)的字符型、整型、浮點(diǎn)型、數(shù)組類型等數(shù)據(jù)類型,還具有其他編程語(yǔ)言所不具備的數(shù)據(jù)類型,其中以指針類型數(shù)據(jù)使用最為靈活,可以通過(guò)編程對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行計(jì)算
ifthen是sql語(yǔ)言,mysql中用ifthen來(lái)做條件判斷