include_alias
指定的 short_filename 是用來做為別名 long_filename。
#pragma include_alias( "long_filename", "short_filename" )
#pragma include_alias( <long_filename>, <short_filename> )
備註
有些檔案系統允許較長的標頭檔名超過 8.3 FAT 檔案系統限制。 編譯器不能只是截斷 8.3,以更長的名稱,因為較長的標頭檔名的前 8 個字元可能不是唯一的。 當編譯器遇到 long_filename 字串,它會替代 short_filename,而查看是否有標頭檔 short_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_alias pragma 執行簡單的字串相符的檔案名稱。 執行其他的檔案名稱驗證。 例如,假設下列指示詞,
#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"
沒有別名 (取代) 會執行,因為不完全相符的標頭檔的字串。 此外,做為引數以 /Yu 與 /Yc 編譯器選項的標頭檔名或 >hdrstop pragma,不會被取代。 例如,如果您的原始程式檔包含下列的指示詞,
#include <AppleSystemHeaderStop.h>
應該要對應的編譯器選項
/YcAppleSystemHeaderStop.h
您可以使用 include_alias pragma,以對應到另一個的任何標頭檔名。 例如:
#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"
編譯器會搜尋兩個檔案。H 而非三個。H.