include_alias
pragma
Menentukan bahwa ketika alias_filename ditemukan dalam #include
arahan, pengkompilasi menggantikan actual_filename di tempatnya.
Sintaks
#pragma include_alias(
"alias_filename",
"actual_filename")
#pragma include_alias(
<<>,
actual_filename alias_filename>)
Keterangan
Direktif include_alias
pragma memungkinkan Anda mengganti file yang memiliki nama atau jalur yang berbeda untuk nama file yang disertakan oleh file sumber. Misalnya, beberapa sistem file memungkinkan nama file header yang lebih panjang daripada batas sistem file FAT 8.3. Pengkompilasi tidak bisa hanya memotong nama yang lebih panjang menjadi 8,3, karena delapan karakter pertama dari nama file header yang lebih panjang mungkin tidak unik. Setiap kali pengkompilasi melihat string alias_filename dalam direktif #include
, itu menggantikan nama actual_filename sebagai gantinya. Kemudian memuat file header actual_filename . Ini pragma harus muncul sebelum arahan yang #include
sesuai. Contohnya:
// 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"
Alias yang akan dicari harus sama persis dengan spesifikasi. Huruf besar/kecil, ejaan, dan penggunaan tanda kutip ganda atau tanda kurung sudut semuanya harus cocok. Melakukan include_alias
pragma pencocokan string sederhana pada nama file. Tidak ada validasi nama file lain yang dilakukan. Misalnya, mengingat arahan berikut,
#pragma include_alias("mymath.h", "math.h")
#include "./mymath.h"
#include "sys/mymath.h"
tidak ada penggantian alias yang dilakukan, karena string file header tidak cocok persis. Selain ituhdrstop
pragma, nama file header yang digunakan sebagai argumen ke /Yu
opsi dan /Yc
compiler, atau , tidak diganti. Misalnya, jika file sumber Anda berisi arahan berikut,
#include <AppleSystemHeaderStop.h>
opsi pengkompilasi yang sesuai harus
/YcAppleSystemHeaderStop.h
Anda dapat menggunakan include_alias
pragma untuk memetakan nama file header apa pun ke nama file header lainnya. Contohnya:
#pragma include_alias( "api.h", "c:\version1.0\api.h" )
#pragma include_alias( <stdio.h>, <newstdio.h> )
#include "api.h"
#include <stdio.h>
Jangan mencampur nama file yang diapit tanda kutip ganda dengan nama file yang diapit dalam tanda kurung sudut. Misalnya, mengingat dua #pragma include_alias
arahan di atas, pengkompilasi tidak melakukan penggantian pada arahan berikut #include
:
#include <api.h>
#include "stdio.h"
Selain itu, arahan berikut menghasilkan kesalahan:
#pragma include_alias(<header.h>, "header.h") // Error
Nama file yang dilaporkan dalam pesan kesalahan, atau sebagai nilai makro yang telah __FILE__
ditentukan sebelumnya, adalah nama file setelah substitusi selesai. Misalnya, lihat output setelah arahan berikut:
#pragma include_alias( "VERYLONGFILENAME.H", "myfile.h" )
#include "VERYLONGFILENAME.H"
Kesalahan dalam VERYLONGFILENAME.H
menghasilkan pesan kesalahan berikut:
myfile.h(15) : error C2059 : syntax error
Perhatikan juga bahwa transitivitas tidak didukung. Mengingat arahan berikut,
#pragma include_alias( "one.h", "two.h" )
#pragma include_alias( "two.h", "three.h" )
#include "one.h"
pengkompilasi mencari file two.h
daripada three.h
.