什麼叫預處理編譯器
預編譯又稱為預處理 , 是做些代碼文本的替換工作。
處理 # 開頭的指令 ,
比如拷貝 #include 包含的文件代碼,
#define 宏定義的替換 , 條件編譯等,
就是為編譯做的預備工作的階段,主要處理#開始的預編譯指令,預編譯指令指示了在程序正式編譯前就由編譯器進行的操作,可以放在程序中的任何位置。
c 編譯系統在對程序進行通常的編譯之前,先進行預處理。 c 提供的預處理功能主要有以下三 種:
1)宏定義 #definemin(a,b)((a)>(b)?(b)::(a))
2 )文件包含 如:#include<stdio.h>
3 )條件編譯#ifndefGRAPHICS_H
#defineGRAPHICS_H
*****
#endif
#ifdefGRAPHICS_H
*****
#else
*****
#endif
⑵ 什麼是預編譯,何時需要預編譯
預編譯又稱為預處理,是做些代碼文本的替換工作
預編譯又稱為預處理,是做些代碼文本的替換工作
處理#開頭的指令,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等
就是為編譯做的預備工作的階段
主要處理#開始的預編譯指令
預編譯指令指示了在程序正式編譯前就由編譯器進行的操作,可以放在程序中的任何位置。常見的預編譯指令有:
(1)#include 指令
該指令指示編譯器將xxx.xxx文件的全部內容插入此處。若用<>括起文件則在系統的INCLUDE目錄中尋找文件,若用" "括起文件則在當前目錄中尋找文件。一般來說,該文件是後綴名為"h"或"cpp"的頭文件。
注意:<>不會在當前目錄下搜索頭文件,如果我們不用<>而用""把頭文件名擴起,其意義為在先在當前目錄下搜索頭文件,再在系統默認目錄下搜索。
(2)#define指令
該指令有三種用法:
第一種是定義標識,標識有效范圍為整個程序,形如#define XXX,常與#if配合使用;
第二種是定義常數,如#define max 100,則max代表100(這種情況下使用const定義常數更好,原因見注1);
第三種是定義"函數",如#define get_max(a, b) ((a)>(b)?(a):(b)) 則以後使用get_max(x,y)就可以得到x和y中較大的數(這種方法存在一些弊病,見注2)。
第四種是定義"宏函數",如#define GEN_FUN(type) type max_##type(type a,type b){return a>b?a:b;} ,使用時,用GEN_FUN(int),則此處預編譯後就變成了 max_int(int a,int b){return a>b?a:b;},以後就可以使用max_int(x,y)就可以得到x和y中較大的數.比第三種,增加了類型的說明。
(3)#if、#else和#endif指令
這些指令一般這樣配合使用:
#if defined(標識) //如果定義了標識
要執行的指令
#else
要執行的指令
#endif
在頭文件中為了避免重復調用(比如說兩個頭文件互相包含對方),常採用這樣的結構:
#if !(defined XXX) //XXX為一個在你的程序中唯一的標識符,
//每個頭文件的標識符都不應相同。
//起標識符的常見方法是若頭文件名為"abc.h"
//則標識為"abc_h"
#define XXX
真正的內容,如函數聲明之類
#endif
⑶ c++中的編譯器和預處理器有何不同
元代碼中,包含了兩個部分的內容,
一個是對機器有用的東西,
一個是對人有用的東西,比如 注釋。
預處理器就是 在編譯之前,把代碼整理一下,把一些沒用的東西,給處理掉。做好准備工作後,然後再編譯。
⑷ 什麼叫編譯器預處理
在正式編譯前的處理。比如
#define a 100
那麼在編譯器把代碼編譯成機器碼之前,他會把所有a出現的地方變成100,在進行編譯。
⑸ C#里的「預處理器」是什麼意思
預處理器是在真正的編譯開始之前由編譯器調用的獨立程序。預處理器可以刪除注釋、包含其他文件以及執行宏(宏macro是一段重復文字的簡短描寫)替代。
⑹ 什麼是預處理器,簡單點說,可否舉個例子。
,,如果是指編程方面而言,預處理器是在程序真正的編譯開始之前,由編譯器調用的獨立程序。預處理器可以刪除注釋、包含其他文件以及執行宏(宏macro是一段重復文字的簡短描寫)替代。
⑺ vc++中的預處理器定義是干什麼用的
預處理(pre-treatment),是指在進行最後加工完善以前進行的准備過程,具體應用在不同的行業或領域,會有不同的解釋。
在一些程序設計語言中,預處理是preprocessing的翻譯。
含義
程序設計領域中,預處理一般是指在程序源代碼被翻譯為目標代碼的過程中,生成二進制代碼之前的過程。典型地,由預處理器(preprocessor) 對程序源代碼文本進行處理,得到的結果再由編譯器核心進一步編譯。這個過程並不對程序的源代碼進行解析,但它把源代碼分割或處理成為特定的單位——(用C/C++的術語來說是)預處理記號(preprocessing token)用來支持語言特性(如C/C++的宏調用)。
C/C++預處理
最常見的預處理是C語言和C++語言。ISO C和ISO C++都規定程序由源代碼被翻譯分為若干有序的階段(phase) [1] [2] ,通常前幾個階段由預處理器實現。預處理中會展開以#起始的行,試圖解釋為預處理指令(preprocessing directive) ,其中ISO C/C++要求支持的包括#if/#ifdef/#ifndef/#else/#elif/#endif(條件編譯)、#define(宏定義)、#include(源文件包含)、#line(行控制)、#error(錯誤指令)、#pragma(和實現相關的雜注)以及單獨的#(空指令)[1] [2] 。預處理指令一般被用來使源代碼在不同的執行環境中被方便的修改或者編譯。[3]
預處理器在UNIX傳統中通常縮寫為PP,在自動構建腳本中C預處理器被縮寫為CPP的宏指代。為了不造成歧義,C++(cee-plus-plus) 經常並不是縮寫為CPP,而改成CXX。
注意預處理常被錯誤地當作預編譯(precompiling) ,事實上這是兩個不同的概念。預處理盡管並不是ISO C/C++要求的單獨階段,但「預處理」這個術語正式地出現並參與構成其它術語,如C的預處理翻譯單元(preprocessing translation unit)[1] 以及C/C++詞法規則中預處理記號(prerprocessing-token) 這個語法分類[1] [2] 。預編譯是一些編譯器支持的特性,不是C/C++語言的特性或實現必須要求遵循的規則涉及到的內容,沒有在ISO C/C++全文中出現[1] [2] 。
紡織物的預處理編輯
含義或目的
紡織物的預處理,是紡織物燒毛、退漿、精練、漂白、絲光和熱定形等工藝過程的總稱。預處理的目的是去除紗線或織物上的天然雜質,以及紡織過程中所附加的漿料、助劑和沾污物。經過預處理的紡織品具有較好的潤濕性、白度、光澤和尺寸穩定性。天然纖維含雜較多,其紡織物的預處理要求也較高,天然纖維與化學纖維混紡織物的預處理工藝,應以適合天然纖維為主,同時照顧化學纖維的要求。
預處理過程
燒毛是燒去紗線或織物表面的茸毛,使織物表面光潔,增進染色或印花後的色澤鮮艷度,在服用過程中不易沾塵。化學纖維織物燒毛後,還可減輕因茸毛摩擦而引起的起球現象。
退漿、精練、漂白過程都是去除織物上的各種雜質,三者相輔相成,各有側重。退漿以去除漿料為主,同時也可洗除部分水溶性天然雜質;精練是以去除纖維伴生的天然雜質為主,並可去除織物上殘留的漿料等物質;漂白是以去除色素為主,並進一步去除精練後的殘留雜質。棉、麻纖維織物大多要經過退漿,常用的有熱水、鹼液、澱粉酶、氧化劑等退漿法。精練對於棉紡織物非常重要,主要是通過燒鹼液的作用去除果膠質、棉脂、棉蠟等天然雜質,並使棉籽殼殘屑體解。棉纖維的漂白常用次氯酸鈉或過氧化氫。薴麻紡織物的精練、漂白工藝和棉相似。亞麻纖維的吸水性較好,精練要求較棉為低,可用純鹼處理。亞麻紡織物的漂白常用較廉價的次氯酸鈉酸性溶液處理,再用鹼液洗除反應產物。漂白和鹼處理可交替重復進行。羊毛精練通常是在原毛狀態進行的,又稱洗毛,主要是去除羊汗和羊脂。可用含碳酸鈉和肥皂或洗滌劑的練液在50℃左右使羊脂乳化而洗除。羊毛纖維一般不經漂白過程,需要時用還原劑如二氧化硫、亞硫酸氫鈉或連二亞硫酸鈉進行漂白,但漂白效果不持久,在空氣中會逐漸氧化而泛黃;用過氧化氫漂白劑效果較好。蠶絲織物的預處理主要是精練,目的是去除絲膠。脫膠用劑主要是肥皂液,可酌加碳酸鈉。也可先用蛋白酶處理,再經肥皂液洗滌。絲纖維的色素等雜質主要集中在絲膠中,脫膠後一般不再漂白。需要漂白時通常採用過氧化氫為漂白劑。合成纖維含雜極少,織造時大多選用水溶性漿料,且用量較少,退漿常結合精練進行,處理的條件可較溫和。錦綸織物用非離子型洗滌劑處理;漂白用劑以亞氯酸鈉最宜,過氧化氫或次氯酸鈉均易使纖維受損。滌綸雖然遇鹼會水解,仍可用淡鹼液作精練處理,但應嚴格控制溫度和時間,漂白用劑以亞氯酸鈉為最好,有時退漿、精練、漂白可同時完成。
絲光主要用於加工棉、麻紡織物。絲光過程的特點是紗線或織物浸漬濃燒鹼液,使纖維發生溶脹,再在張力狀態下洗去鹼液,從而獲得耐久性的光澤,有效地提高染料的上染率並有定形作用。
熱定形主要用於受熱後易收縮變形的錦綸或滌綸等合成纖維及其混紡物的加工。這些紡織物在染色或印花之前,一般都先在有張力的狀態下用比後續工序為高的溫度進行處理,以防止織物收縮變形。
工業水處理中預處理編輯
定義和組成
沼氣在沼氣池中發酵產生後
氣體預處理
氣體預處理
,裡面會有大量的腐蝕性氣體和對環境造成嚴重污染的氣體(烷類氣體、一氧化碳、二氧化碳、硫化氣體等),對於發電機組和環境都是不能接受的,賓士預處理系統主要是為了保證燃氣發電機組能夠正常穩定的運行而設計生產的,沼氣經過預處理系統後可以大大降低硫化物、水分及顆粒度。
在工業用水處理中,預處理工序的任務是將工業用水的水源——地表水、地下水或城市自來水處理到符合後續水處理裝置所允許的進水水質指標,從而保證水處理系統長期安全、穩定地運行,為工業生產提供優質用水。
預處理的對象主要是水中的懸浮物、膠體、微生物、有機物、游離性余氯和重金屬等。這些雜質對於電滲析、離子交換、反滲透、鈉濾等水處理裝置會產生不利的影響。 [4]
(一)懸浮物
在離子交換水處理中,進水的懸浮物會附著於交換劑顆粒表面,降低交換容量。
在電滲析水處理中,進水的懸浮物會黏附在膜表面上,成為離子遷移的障礙,增加膜電阻。
在鈉濾、反滲透中,進水的懸浮物會堵塞膜的微孔,使透水率下降。
(二)有機物
在離子交換水處理中,有機物會污染陰離子交換樹脂,使其交換容量下降,再生劑耗量增大,樹脂使用壽命縮短。
在電滲析水處理中,水中帶極性有機物被膜吸附後,會改變膜的極性,並使膜的選擇透過性降低,膜電阻增加。
在反滲透、鈉濾水處理中,有機物、膠體、懸浮物容易堵塞反滲透、鈉濾膜的微孔,使透水率很快下降。
(三)微生物
水中的細菌轉移到電滲析膜,在膜面上繁殖,會使膜電阻增加。
細菌、微生物對醋酸纖維素反滲透、納濾膜有侵蝕作用。細菌繁殖會污染膜。
(四)游離性余氯
游離性余氯會使陽離子交換樹脂或離子交換膜活性基團氧化分解,引起樹脂或膜結構破壞。還會使反滲透聚醯胺膜性能惡化。
(五)鐵、錳離子
鐵、錳離子易被離子交換樹脂吸附,且不易被再生劑取代,降低交換容量。也會使電滲析膜污染、中毒。鐵、錳金屬氧化物,其含量高時,在反滲透、納濾膜表面易形成氫氧化物膠體,產生沉澱作用。
由於上述種種不利的影響,導致工業用水處理系統產水量減少,出水的水質下降,工作周期縮短,消耗指標上升,制水成本提高,樹脂和膜的使用壽命縮短,並在操作管理上增加麻煩。
隨著工農業的不斷發展,城市人口的日益密集,有些污水未經處理排入江河,使水中有害物質日益增多。這就對工業用水的預處理提出了更高的要求。
⑻ C語言中 「編譯時處理」 與 「預處理」 兩個概念的區別
浩強哥的教材中說的很清楚,可以參考。簡單來說,C語言程序在編譯前,其實是有一個預備工作的,這個就是「預處理」,可以理解為:人類所編寫的程序,需要轉化為機器能夠編譯的合理輸入文件。機器編譯,就是按照語法來處理語句,一些語句或者邏輯是在編譯時才有意義,才進行分析,這就是「編譯時處理」。
⑼ C語言「編譯預處理命令」,是什麼意思
您好,
宏定義
c程序提供的預處理功能之一。包括帶參數的宏定義和不帶參數的宏定義。具體是指用一個指定的標志符來進行簡單的字元串替換或者進行闡述替換。形式為:
#define
標志符(參數表)
字元串
宏名
在上定義中的標志符被稱為「宏名」。
宏展開
在c程序編譯時將宏名替換成字元串的過程稱為「宏展開」。
define
是對宏的定義:如定義了一個宏m,代表100.也就在下面的程序中只要是遇到變數m,它的值就是100