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