ทุกคนสามารถอธิบายวิธีสร้างไฟล์ส่วนหัวใน C ด้วยตัวอย่างง่ายๆตั้งแต่ต้นจนจบ
ทุกคนสามารถอธิบายวิธีสร้างไฟล์ส่วนหัวใน C ด้วยตัวอย่างง่ายๆตั้งแต่ต้นจนจบ
คำตอบ:
foo.h
#ifndef FOO_H_ /* Include guard */
#define FOO_H_
int foo(int x); /* An example function declaration */
#endif // FOO_H_
foo.c
#include "foo.h" /* Include the header (not strictly necessary here) */
int foo(int x) /* Function definition */
{
return x + 5;
}
main.c
#include <stdio.h>
#include "foo.h" /* Include the header here, to obtain the function declaration */
int main(void)
{
int y = foo(3); /* Use the function here */
printf("%d\n", y);
return 0;
}
เพื่อรวบรวมโดยใช้ GCC
gcc -o my_app main.c foo.c
#ifndef MY_HEADER_H
# define MY_HEADER_H
//put your function headers here
#endif
MY_HEADER_H
ทำหน้าที่เป็นยามรวมสองครั้ง
สำหรับการประกาศฟังก์ชั่นคุณจะต้องกำหนดลายเซ็นนั่นคือโดยไม่มีชื่อพารามิเตอร์เช่นนี้:
int foo(char*);
หากคุณต้องการจริงๆคุณสามารถรวมตัวระบุพารามิเตอร์ได้ แต่ไม่จำเป็นเพราะตัวระบุจะใช้เฉพาะในเนื้อหาของฟังก์ชัน (การนำไปใช้) ซึ่งในกรณีที่ส่วนหัว (ลายเซ็นพารามิเตอร์) หายไป
นี้ประกาศฟังก์ชั่นfoo
ที่ยอมรับและส่งกลับchar*
int
ในไฟล์ต้นฉบับคุณจะต้อง:
#include "my_header.h"
int foo(char* name) {
//do stuff
return 0;
}
extern
การประกาศตัวแปรและ ฟังก์ชั่นในไฟล์ที่แยกต่างหากในอดีตเรียกว่าส่วนหัวซึ่งรวมอยู่#include
ที่ด้านหน้าของไฟล์ต้นฉบับแต่ละไฟล์ตัวอย่างเช่นฟังก์ชั่นของไลบรารีมาตรฐานจะถูกประกาศในส่วนหัวเช่น<stdio.h>
"
myfile.h
#ifndef _myfile_h
#define _myfile_h
void function();
#endif
myfile.c
#include "myfile.h"
void function() {
}
void function();
เป็นประกาศfunction(42);
ที่ไม่ได้ป้องกันไม่ให้สายเช่น ใช้void
ในการประกาศเช่นvoid function(void);
ไฟล์ส่วนหัวมีต้นแบบสำหรับฟังก์ชั่นที่คุณกำหนดในไฟล์. c หรือ. cpp / .cxx (ขึ้นอยู่กับว่าคุณใช้ c หรือ c ++) คุณต้องการวาง # ifndef / # กำหนดรอบรหัส. h ของคุณเพื่อให้คุณรวม. h เดียวกันสองครั้งในส่วนต่าง ๆ ของโปรแกรมของคุณต้นแบบจะรวมเพียงครั้งเดียว
client.h
#ifndef CLIENT_H
#define CLIENT_H
short socketConnect(char *host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize);
#endif /** CLIENT_H */
จากนั้นคุณต้องติดตั้ง. h ในไฟล์. c ดังนี้:
client.c
#include "client.h"
short socketConnect(char *host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize) {
short ret = -1;
//some implementation here
return ret;
}