include_alias

Указывает, что short_filename в качестве псевдонима для long_filename.

#pragma include_alias( "long_filename", "short_filename" )
#pragma include_alias( <long_filename>, <short_filename> )

Заметки

Некоторые файловые системы допускают более длинные имена файлов заголовков, чем ограничение файловой системе FAT 8,3.Компилятор не может просто усекать более длинные имена 8,3, поскольку первые 8 символов более длинных имен файла заголовка, могут не быть уникальными.Когда компилятор встречает long_filename строка, он подставляет short_filenameи ищет файл заголовка short_filename вместо этого.Эта прагма должна указываться раньше соответствовать #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>

Не следует смешивать имена файлов, заключенные в двойные кавычки, имена файлов, заключенные в угловые скобки.Например, если приведенные выше 2 include_alias #pragma директивы, компилятор не выполняет подстановку в следующем нет #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

Также обратите внимание, что transitivity не поддерживается.Учитывая следующие рекомендации

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

компилятор выполняет поиск файла TWO.H, а не THREE.H.

См. также

Ссылки

Директивы pragma и ключевое слово __Pragma