我在讀gcc gnu-online-docs。我對於它在頭文件名中提到的關於\
或/
的內容感到困惑。頭文件名中的斜槓是什麼意思?
它說:
但是,如果文件中出現反斜線,它們被認爲是 普通的文本字符,沒有轉義字符。處理C中沒有適合字符串常量的字符 轉義序列。 因此,
#include "x\n\\y"
指定一個包含三個反斜槓的文件名。 (有些系統解釋「\」作爲路徑分隔符。這些也解釋「/
」以同樣的方式全部 ,這是最便攜的使用 只有「/
」。)
是什麼的意思「一些系統「在這一段?這是否意味着實施取決於操作系統 - Windows/Linux? (我知道#include <linux/module.h>
,/
指定的路徑)
好吧..但不是GCC負責這種解釋和轉換?而且GCC在linux和windows(MinGW)上都支持,所以爲什麼不同? – brokenfoot
GCC將字符串'foo \ bar.h'逐字傳遞給'open'。它是解析路徑名分隔符的操作系統。它可以「解釋」字符串,只要它不處理* - 不管作爲一個轉義序列(對比常規字符串常量),我想;但* *行爲*在所有支持的主機操作系統中都是一致的。 – zwol
Ohkkk ..明白了..謝謝!哇!你寫的文件?這是我的榮幸,直接與你談談:) – brokenfoot