Bagikan melalui


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_aliaspragma 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_aliaspragma 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 ituhdrstoppragma, 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_aliaspragma 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.

Lihat juga

Pragmadirektif dan __pragma kata kunci dan _Pragma