欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

C語言或者C++語言頭文件的意義是什么,現代編譯器能否把這個給優化掉?

林玟書2年前14瀏覽0評論

當程序編譯進入第一個階段,預處理,預處理器在C/C++代碼頭文件處插入頭文件所指向的代碼,使得在接下來的編譯獲得完整的代碼加以處理。

以上得知,C/C++語言的頭文件起到了兩個作用。第一,封裝。封裝了頭文件的代碼,使其得以被其他程序方便調用。第二,明確代碼調用關系。

假如編譯器試圖通過某些手段去除頭文件,那么必須要從代碼中推斷出引用代碼的出處。請看一個簡單的C++語言程序,helloworld.cpp

intmain(){

cout<<"hello,world\n";

printf("hello,world\n");

}

編譯器在helloworld.cpp中,找不到cout和printf的定義。怎么辦?啊,簡單,讓編譯器去標準庫里找不就是了,cout在iostram里定義,printf在cstdio中。你知道,C/C++標準庫很龐大,每次編譯時要去蠻力搜索查找,時間上很昂貴,除非事先做了加速處理,然而引入了更多的工程問題。

好,那么我們多加兩行代碼

intmain(){

cout<<"hello,world\n";

printf("hello,world\n");

Persondmr("Dennis","Ritchie");

cout<<dmr.last_name()<<endl;

}

問題來了。代碼中沒有Person類的定義。怎么辦?去哪里找?我們必須告訴編譯器,不然它只能在系統里去蠻力查找,時間上很昂貴,而且可能找錯,畢竟也許有多個文件定義Person類呢!所以我們必須在源代碼里標注出。繞了一圈,不是回到起點了,那不就是頭文件嗎?

為了省掉頭文件或者在頭文件處理上加上很多控制,從編譯效率和代碼可讀性上,投入和收益比,沒有明顯提升,甚至下降。于是,C/C++頭文件成了現實的工程選擇。

有幫助,請點贊。


更多精彩文章和回答,請關注

微信公眾號:IT之州

今日:IT之州

新浪微博:IT之州