91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中include能包含什么文件

發布時間:2021-11-22 14:55:10 來源:億速云 閱讀:1055 作者:iii 欄目:互聯網科技

本篇內容主要講解“C語言中include能包含什么文件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言中include能包含什么文件”吧!

文/Edward  

之前我們已經講到過,#include預處理指令使另外一個文件的內容在預處理的時候,先會被復制到當前的.c文件中來,產生一個中間文件,一般情況下,這個中間文件是存儲在編譯器內存里面的,它不會被輸出,但是我們可以使用gcc命令來將這個文件存儲下來,即使用” gcc -E ./helloworld.c > a.out”命令,即可將預處理產生的內容保留出來。如圖1所示。

 C語言中include能包含什么文件
圖1 預處理輸出文件

我們在圖1中,僅僅簡單地包含了一個我們自己寫的一個頭文件,這個頭文件里面有一個#define定義的標號MAX,也有一個變量a,當我們包含了這個頭文件并且進行編譯的時候,編譯器便會將頭文件里面的內容在編譯流程的預處理階段把.c源文件中的相關標號定義全部替換掉,如果.h頭文件里面包含了變量的定義,便會將變量的定義原封不動地復制到.c源文件中。以上內容就是文件包含的全部內容。
然而#include預處理如果再深究下去,它的內容可不止如此。

  庫函數的包含和本地頭文件的包含
前面我們也講到過,用#include包含頭文件的時候,根據包含的頭文件到底是庫函數還是用戶自己寫的本地頭文件分別有不同的包含方式。
如果用#include包含庫函數,那么其包含的方式為:
#include <filename>    
對于filename不存在任何限制,不過根據約定,標準庫的庫文件以一個.h后綴結尾。編譯器通過查找由編譯器定義的“一系列標準庫路徑”來查找庫函數的頭文件。比如,在典型的UNIX/類UNIX系統上,C編譯器在/user/include/目錄中去查找庫函數的頭文件。
如果是本地頭文件的包含,那么其包含方式為:
#include “filename”
這個頭文件如果和所有的源文件放置在一個目錄底下,那么就無需去顯式地指明其路徑。如果不在同一個文件夾下,那么UNIX和BorlandC編譯器都支持一種變體形式,即使用絕對地址的路徑名。如:
#include “../src/usart/ usart.h”

    頭文件的形式
再來想一想,C語言中的#include只能支持包含.h后綴的頭文件嗎?其實不然,除了C語言標準庫文件在編寫時是按照約定以.h結尾的,用戶自己定義的頭文件根本就沒有這一條規定。比如圖2所示。

C語言中include能包含什么文件
圖2 C語言包含亂七八糟后綴名的頭文件

在圖2中大家可以看到,我在b.c這個C語言源文件里面包含了一個c.x的頭文件,這個c.x后綴名我自己也不知道是什么意思。但是奇怪的是,編譯器在做預處理的時候,竟然將c.x文件中的內容正常的處理過來了,除了VSCode做代碼靜態解析的時候,有錯誤提示之外,其他貌似什么事情都沒有發生。因此,在一個.c文件里面用#include包含什么后綴的文件,在C語言里面沒有規定。只不過約定俗成,都用.h結尾的文件來當頭文件而已。
但是,C語言中源文件的后綴名有明確要求,一定要用.c后綴的文件。

    頭文件里面的內容
接下來,最后一個內容,頭文件里面到底可以用來寫什么內容。這個問題非常玄乎,C語言也沒有規定,隨便你自己去寫。我之前看到過有個哥們(一個半路出家的工程師)將函數全部定義在頭文件中。對于這樣的人才,我除了說他天資聰穎,資質過人,骨骼精奇這樣的褒義詞之外,根本就詞窮了。C語言的頭文件里面的的確確可以用來寫函數,你沒有聽錯,我再寫一遍,的的確確可以用來寫函數。但是,這樣子寫出來的函數很難被多個其它文件包含。這個問題我本來不想展開講解,因為殺傷力太大,我怕將這個反面教材正面化了。但是滿足大家的好奇,還是貼出來了,如圖3所示。
C語言中include能包含什么文件
圖3 反面教材

到此,相信大家對“C語言中include能包含什么文件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

峨眉山市| 民丰县| 乌鲁木齐县| 武陟县| 怀仁县| 宁强县| 错那县| 邮箱| 彩票| 洱源县| 榆林市| 海口市| 谷城县| 德兴市| 和平区| 炉霍县| 公安县| 顺义区| 册亨县| 尤溪县| 容城县| 滨州市| 思南县| 乡宁县| 双峰县| 隆德县| 满洲里市| 崇州市| 滦南县| 濉溪县| 罗平县| 普兰店市| 许昌县| 綦江县| 东阿县| 仪征市| 乐安县| 林西县| 新民市| 梁河县| 沅陵县|