共用方式為


include_alias pragma

指定在指示詞中找到alias_filename時,編譯程式會取代其位置中的actual_filename #include

語法

#pragma include_alias(alias_filename,actual_filename)
#pragma include_alias(<<>,alias_filename actual_filename>)

備註

指示 include_aliaspragma 詞可讓您將具有不同名稱或路徑的檔案取代為原始程式檔所包含的檔名。 例如,某些文件系統允許的標頭檔名比 8.3 FAT 檔案系統限制還要長。 編譯程式不能只截斷較長的名稱為 8.3,因為較長標頭檔名的前八個字元可能不是唯一的。 每當編譯程式在 指示詞中看到#includealias_filename字串時,就會取代名稱actual_filename。 然後它會載入 actual_filename 頭檔。 這 pragma 必須出現在對應的 #include 指示詞之前。 例如:

// First eight characters of these two files not unique.
#pragma include_alias( "AppleSystemHeaderQuickdraw.h", "quickdra.h" )
#pragma include_alias( "AppleSystemHeaderFruit.h", "fruit.h" )

#pragma include_alias( "GraphicsMenu.h", "gramenu.h" )

#include "AppleSystemHeaderQuickdraw.h"
#include "AppleSystemHeaderFruit.h"
#include "GraphicsMenu.h"

要搜尋的別名必須完全符合規格。 大小寫、拼字和雙引號或角括弧的使用必須全部相符。 會對 include_aliaspragma 檔名執行簡單的字串比對。 不會執行其他檔名驗證。 例如,假設有下列指示詞:

#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"

沒有完成別名替代,因為頭檔字串不完全相符。 此外,不會取代做為 和編譯程式選項之/Yu自變數的標頭檔名, 或 hdrstoppragma。/Yc 例如,如果原始程式檔包含下列指示詞:

#include <AppleSystemHeaderStop.h>

則對應的編譯器選項應該是

/YcAppleSystemHeaderStop.h

您可以使用 include_aliaspragma 將任何標頭檔名對應至另一個標頭。 例如:

#pragma include_alias( "api.h", "c:\version1.0\api.h" )
#pragma include_alias( <stdio.h>, <newstdio.h> )
#include "api.h"
#include <stdio.h>

請勿混合以雙引弧括住的檔名與以角括弧括住的檔名。 例如,假設上述兩 #pragma include_alias 個指示詞,編譯程式不會在下列 #include 指示詞上進行替代:

#include <api.h>
#include "stdio.h"

此外,下列指示詞會產生錯誤:

#pragma include_alias(<header.h>, "header.h")  // Error

錯誤訊息中回報的檔名,或做為預先定義 __FILE__ 巨集的值,是在替代完成之後的檔名。 例如,請參閱下列指示詞之後的輸出:

#pragma include_alias( "VERYLONGFILENAME.H", "myfile.h" )
#include "VERYLONGFILENAME.H"

中的 VERYLONGFILENAME.H 錯誤會產生下列錯誤訊息:

myfile.h(15) : error C2059 : syntax error

另請注意,不支援可轉移性。 假設有下列指示詞:

#pragma include_alias( "one.h", "two.h" )
#pragma include_alias( "two.h", "three.h" )
#include "one.h"

編譯程式會搜尋 檔案 two.h ,而不是 three.h

另請參閱

Pragma 指示詞和 __pragma_Pragma 關鍵詞