亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

#include <filename>和#include“filename”有什么區別?

#include <filename>和#include“filename”有什么區別?

眼眸繁星 2019-05-25 15:36:50
#include <filename>和#include“filename”有什么區別?在C和C ++編程語言中,使用尖括號和在include語句中使用引號有什么區別,如下所示?#include <filename>#include "filename"
查看完整描述

4 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

實際上,差異在于預處理器搜索包含文件的位置。

對于#include <filename>預處理器以依賴于實現的方式搜索,通常在編譯器/ IDE預先指定的搜索目錄中。此方法通常用于包括標準庫頭文件。

對于#include "filename"預處理器首先在與包含該指令的文件相同的目錄中進行搜索,然后按照用于#include <filename>表單的搜索路徑進行搜索。此方法通常用于包括程序員定義的頭文件。

有關搜索路徑的GCC 文檔中提供了更完整的描述。


查看完整回答
反對 回復 2019-05-25
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

唯一的方法是閱讀您的實現文檔。

C標準中,第6.10.2節第2至4段規定:

  • 表單的預處理指令

    #include <h-char-sequence> new-line

    搜索的用于實現定義的地方的序列報頭由之間的指定序列唯一地識別<>分隔符,并且使得由所述的全部內容替換該指令的標頭。如何指定場所或標識的頭是實現定義的。

  • 表單的預處理指令

    #include "q-char-sequence" new-line

    導致由分隔符之間的指定序列標識的源文件的全部內容替換該指令"。以實現定義的方式搜索指定的源文件。如果不支持此搜索,或者搜索失敗,則會重新處理該指令,就像它讀取一樣

    #include <h-char-sequence> new-line

    使用>原始指令中相同的包含序列(包括字符,如果有的話)。

  • 表單的預處理指令

    #include pp-tokens new-line

    (允許與前兩種形式中的一種不匹配)。include指令中的預處理標記處理與正常文本一樣。(當前定義為宏名稱的每個標識符將替換為其預處理標記的替換列表。)所有替換后生成的指令應與前兩個表單中的一個匹配。將a <>預處理令牌對或一對"字符之間的一系列預處理標記組合成單個標題名稱預處理標記的方法是實現定義的。

定義:

  • h-char:源字符集的任何成員,除了換行符和 >

  • q-char:源字符集的任何成員,除了換行符和 "


查看完整回答
反對 回復 2019-05-25
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

<和>之間的字符序列唯一地引用標題,該標題不一定是文件。實現幾乎可以隨意使用字符序列。(但是,大多數情況下,只需將其視為文件名并在包含路徑中進行搜索,就像其他帖子所述。)

如果使用該#include "file"表單,則實現首先查找給定名稱的文件(如果支持)。如果不是(支持),或者搜索失敗,則實現的行為就像使用了other(#include <file>)形式一樣。

此外,存在第三種形式,當#include指令與上述任何一種形式都不匹配時使用。在這種形式中,一些基本的預處理(例如宏擴展)在#include指令的“操作數”上完成,并且結果預期與其他兩種形式中的一種匹配。


查看完整回答
反對 回復 2019-05-25
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

這里的一些好的答案引用了C標準,但忘記了POSIX標準,特別是c99(例如C編譯器)命令的特定行為。

根據The Open Group Base Specifications Issue 7,

-I 目錄

在查找常用位置之前,更改搜索名稱不是絕對路徑名的標頭的算法,以查找目錄路徑名所指定的目錄。因此,名稱以雙引號(“”)括起來的標題應首先在#include行的文件目錄中搜索,然后在-I選項中命名的目錄中搜索,最后在通常的位置搜索。對于名稱用尖括號(“<>”)括起來的標題,只能在-I選項中指定的目錄中搜索標題,然后在通常的位置搜索標題。在-I選項中命名的目錄應按指定的順序進行搜索。c99命令調用。

因此,在符合POSIX標準的環境中,使用符合POSIX標準的C編譯器,#include "file.h"可能會首先搜索./file.h,其中.是帶有#include語句的文件所在的目錄,同時#include <file.h>,可能/usr/include/file.h首先搜索,/usr/include系統定義在哪里通常的標題位置(似乎沒有POSIX定義)。


查看完整回答
反對 回復 2019-05-25
  • 4 回答
  • 0 關注
  • 1116 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號