Bất cứ ai cũng có thể giải thích cách tạo một tệp tiêu đề trong C bằng một ví dụ đơn giản từ đầu đến cuối.
Bất cứ ai cũng có thể giải thích cách tạo một tệp tiêu đề trong C bằng một ví dụ đơn giản từ đầu đến cuối.
Câu trả lời:
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;
}
C chính
#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;
}
Để biên dịch bằng 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
phục vụ như một bảo vệ bao gồm kép.
Đối với khai báo hàm, bạn chỉ cần xác định chữ ký, nghĩa là không có tên tham số, như thế này:
int foo(char*);
Nếu bạn thực sự muốn, bạn cũng có thể bao gồm số nhận dạng của tham số, nhưng không cần thiết vì số nhận dạng sẽ chỉ được sử dụng trong phần thân của hàm (triển khai), trong trường hợp tiêu đề (chữ ký tham số), nó bị thiếu.
Điều này khai báo hàm foo
chấp nhận a char*
và trả về một int
.
Trong tệp nguồn của bạn, bạn sẽ có:
#include "my_header.h"
int foo(char* name) {
//do stuff
return 0;
}
extern
khai báo các biến và các hàm trong một tệp riêng biệt, theo lịch sử được gọi là tiêu đề , được bao gồm #include
ở phía trước của mỗi tệp nguồn. Chẳng hạn, các chức năng của thư viện chuẩn được khai báo trong các tiêu đề như <stdio.h>
. "
myfile.h
#ifndef _myfile_h
#define _myfile_h
void function();
#endif
myfile.c
#include "myfile.h"
void function() {
}
void function();
như một tuyên bố không ngăn chặn các cuộc gọi như thế nào function(42);
. Sử dụng void
trong khai báo nhưvoid function(void);
tệp tiêu đề chứa các nguyên mẫu cho các chức năng bạn xác định trong tệp .c hoặc .cpp / .cxx (tùy thuộc vào việc bạn đang sử dụng c hoặc c ++). Bạn muốn đặt # ifndef / # định nghĩa xung quanh mã .h của mình để nếu bạn bao gồm cùng một .h hai lần trong các phần khác nhau của chương trình, các nguyên mẫu chỉ được đưa vào một lần.
khách hàng
#ifndef CLIENT_H
#define CLIENT_H
short socketConnect(char *host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize);
#endif /** CLIENT_H */
Sau đó, bạn sẽ triển khai .h trong tệp .c như vậy:
khách hàng
#include "client.h"
short socketConnect(char *host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize) {
short ret = -1;
//some implementation here
return ret;
}