C ไฟล์ส่วนหัว
ส่วนหัวของแฟ้มเป็น.h นามสกุลไฟล์รวมทั้งการประกาศฟังก์ชัน C และนิยามแมโครอ้างใช้ร่วมกันโดยแฟ้มจากหลายแหล่งมีสองประเภทของส่วนหัว: การเขียนโปรแกรมเพื่อเขียนไฟล์ส่วนหัวและคอมไพเลอร์มาพร้อมกับไฟล์ส่วนหัว
ในโปรแกรมที่คุณต้องการใช้ไฟล์ส่วนหัวใช้ C# include preprocessor สั่งการอ้างถึงมันเราได้เห็นแล้วส่วนหัวของแฟ้มstdio.h ซึ่งเป็นไฟล์ส่วนหัวที่มาพร้อมกับคอมไพเลอร์
ไฟล์ส่วนหัวอ้างเทียบเท่ากับการคัดลอกเนื้อหาของไฟล์ส่วนหัว แต่เราจะไม่คัดลอกเนื้อหาของไฟล์ส่วนหัวโดยตรงในแฟ้มแหล่งที่มาเพราะการทำเช่นนั้นมีแนวโน้มที่จะเกิดข้อผิดพลาดโดยเฉพาะอย่างยิ่งเมื่อโปรแกรมประกอบด้วยส่วนใหญ่ของไฟล์ที่มา
การปฏิบัติที่ง่ายใน C หรือ C ++ โปรแกรมแนะนำว่าทุกคนคงแมโครตัวแปรและฟังก์ชั่นระดับโลกต้นแบบระบบการเขียนในไฟล์ส่วนหัวเมื่อมีความจำเป็นในเวลาใด ๆ หมายถึงส่วนหัวเหล่านี้
ไฟล์ส่วนหัวไวยากรณ์อ้างอิง
การใช้คำสั่ง#include preprocessing สามารถอ้างอิงของผู้ใช้และระบบไฟล์ส่วนหัวมันมีสองต่อไปนี้รูปแบบ:
#include <file>
รูปแบบนี้จะใช้ในการอ้างอิงไฟล์ส่วนหัวระบบ จะค้นหาไฟล์ไฟล์ชื่ออยู่ในรายชื่อมาตรฐานของไดเรกทอรีระบบ เมื่อรวบรวมรหัสที่มาคุณสามารถ -i ตัวเลือกก่อนไดเรกทอรีก่อนรายการ
#include "file"
รูปแบบนี้จะใช้ในการอ้างอิงไฟล์ส่วนหัวของผู้ใช้ จะค้นหาไฟล์ชื่อแฟ้มในไดเรกทอรีที่มีไฟล์ปัจจุบัน เมื่อรวบรวมรหัสที่มาคุณสามารถ -i ตัวเลือกก่อนไดเรกทอรีก่อนรายการ
การกระทำอ้างอิงแฟ้มส่วนหัว
สั่ง#include สั่ง preprocessor C เรียกดูไฟล์ที่ระบุเป็น inputการส่งออกของ preprocessor มีการส่งออกที่ได้รับการสร้างไฟล์ที่ส่งออกข้อความอ้างอิงสร้างและการสอน#include เอาท์พุทตัวอย่างเช่นถ้าคุณมี header.h ไฟล์ส่วนหัวดังต่อไปนี้:
char *test (void);
และไฟล์ส่วนหัวโดยใช้program.c โปรแกรมหลักดังต่อไปนี้:
int x; #include "header.h" int main (void) { puts (test ()); }
คอมไพเลอร์จะเห็นกระแสโทเค็นต่อไปนี้:
int x; char *test (void); int main (void) { puts (test ()); }
อ้างอิงเท่านั้นไฟล์ส่วนหัวอย่างใดอย่างหนึ่ง
หากไฟล์ส่วนหัวมีการอ้างถึงสองครั้งคอมไพเลอร์จะดำเนินการเนื้อหาของทั้งสองไฟล์ส่วนหัวซึ่งจะสร้างข้อผิดพลาด เพื่อป้องกันการนี้มาตรฐานการปฏิบัติคือการใส่เนื้อหาทั้งหมดของไฟล์ในงบรวบรวมเงื่อนไขดังต่อไปนี้:
#ifndef HEADER_FILE #define HEADER_FILE the entire header file file #endif
โครงสร้างนี้จะเรียกกันทั่วไปว่าเสื้อคลุมคำสั่ง #ifdefเมื่ออ้างอิงไฟล์ส่วนหัวอีกครั้งในสภาพที่เป็นเท็จเพราะ HEADER_FILE กำหนด ในกรณีนี้ preprocessor จะข้ามเนื้อหาทั้งหมดของไฟล์คอมไพเลอร์จะไม่สนใจมัน
อ้างเงื่อนไข
บางครั้งคุณต้องเลือกการอ้างอิงไปยังโปรแกรมจากหลายไฟล์ส่วนหัวที่แตกต่างกัน ตัวอย่างเช่นคุณจะต้องระบุพารามิเตอร์การตั้งค่าบนระบบปฏิบัติการที่แตกต่างกัน คุณสามารถใช้ชุดของเงื่อนไขเพื่อให้บรรลุนี้ดังต่อไปนี้:
#if SYSTEM_1 # include "system_1.h" #elif SYSTEM_2 # include "system_2.h" #elif SYSTEM_3 ... #endif
แต่ถ้าส่วนหัวยื่นเวลามากขึ้นที่จะทำเช่นนั้นไม่เหมาะสมมากใช้มาโครชื่อ preprocessor เพื่อกำหนดส่วนหัวนี้เรียกว่าการอ้างอิงเงื่อนไขมันไม่ได้นำมาใช้เป็นชื่อของไฟล์ส่วนหัว#include พารามิเตอร์โดยตรงที่คุณจะต้องใช้แมโครเพื่อแทนที่ชื่อ:
#define SYSTEM_H "system_1.h" ... #include SYSTEM_H
SYSTEM_H ขยาย preprocessor ดู system_1.h เป็นเขียนเป็น#includeSYSTEM_H Makefile อาจถูกกำหนดโดยตัวเลือก -D สำหรับคุณ