Fail pengepala C


Fail pengepala ialah fail dengan sambungan .h Ia mengandungi pengisytiharan fungsi C dan takrifan makro serta dirujuk dan dikongsi dalam berbilang fail sumber. Terdapat dua jenis fail pengepala: fail pengepala yang ditulis oleh pengaturcara dan fail pengepala yang disediakan oleh pengkompil.

Untuk menggunakan fail pengepala dalam atur cara, anda perlu menggunakan arahan prapemprosesan C #include untuk merujuknya. Kami telah melihat fail pengepala stdio.h sebelum ini, iaitu fail pengepala yang disertakan dengan pengkompil.

Merujuk kepada fail pengepala adalah bersamaan dengan menyalin kandungan fail pengepala, tetapi kami tidak akan menyalin secara langsung kandungan fail pengepala dalam fail sumber kerana ia mudah melakukan kesilapan, terutamanya apabila program terdiri daripada berbilang fail sumber apabila.

Amalan mudah dalam program C atau C++, adalah disyorkan untuk menulis semua pemalar, makro, pembolehubah global sistem dan prototaip fungsi dalam fail pengepala dan merujuk fail pengepala ini pada bila-bila masa apabila diperlukan.

Sintaks untuk merujuk fail pengepala

Gunakan arahan prapemprosesan #include untuk merujuk pengguna dan fail pengepala sistem. Ia mempunyai dua bentuk berikut:

#include <file>

Borang ini digunakan untuk merujuk fail pengepala sistem. Ia mencari senarai standard direktori sistem untuk fail bernama fail. Apabila menyusun kod sumber, anda boleh menambah direktori ke senarai dengan pilihan -I.

#include "file"

Borang ini digunakan untuk merujuk fail pengepala pengguna. Ia mencari direktori yang mengandungi fail semasa untuk fail bernama fail. Apabila menyusun kod sumber, anda boleh menambah direktori ke senarai dengan pilihan -I.

Operasi untuk merujuk fail pengepala Arahan

#include mengarahkan prapemproses C untuk menyemak imbas fail yang ditentukan sebagai input. Output prapemproses termasuk output yang dijana, output yang dijana oleh fail yang dirujuk dan output teks selepas arahan #include. Contohnya, jika anda mempunyai fail pengepala header.h, seperti berikut:

char *test (void);

dan program utama yang menggunakan fail pengepala program.c, seperti berikut:

int x;#include "header.h"int main (void){
   puts (test ());}

compile Pengkompil akan melihat aliran token berikut:

int x;char *test (void);int main (void){
   puts (test ());}

Fail pengepala hanya dirujuk sekali

Jika fail pengepala dirujuk dua kali, pengkompil akan memproses kandungan fail pengepala dua kali, yang akan Ralat berlaku. Untuk mengelakkan ini, amalan standard ialah meletakkan keseluruhan kandungan fail dalam pernyataan kompilasi bersyarat, seperti berikut:

#ifndef HEADER_FILE#define HEADER_FILE

the entire header file file#endif

Struktur ini biasanya dikenali sebagai pembungkus #ifndef. Apabila fail pengepala dirujuk semula, syaratnya adalah palsu kerana HEADER_FILE ditakrifkan. Pada ketika ini, prapemproses melangkau keseluruhan kandungan fail dan pengkompil mengabaikannya.

Rujukan Bersyarat

Kadangkala adalah perlu untuk memilih rujukan daripada berbilang fail pengepala yang berbeza kepada program. Sebagai contoh, anda perlu menentukan parameter konfigurasi untuk digunakan pada sistem pengendalian yang berbeza. Anda boleh mencapai ini melalui satu siri syarat, seperti berikut:

#if SYSTEM_1   # include "system_1.h"#elif SYSTEM_2   # include "system_2.h"#elif SYSTEM_3   ...#endif

Tetapi jika terdapat banyak fail pengepala, ini tidak sesuai Prapemproses menggunakan makro untuk mentakrifkan nama fail pengepala. Ini dipanggil rujukan bersyarat. Daripada menggunakan nama fail pengepala sebagai hujah langsung kepada #include, anda hanya perlu menggunakan nama makro sebaliknya:

 #define SYSTEM_H "system_1.h" ... #include SYSTEM_H

SYSTEM_H akan dikembangkan dan prapemproses akan mencari system_1.h, Sama seperti #include pada asalnya ditulis. SYSTEM_H boleh ditakrifkan oleh Makefile anda melalui pilihan -D.