Adakah yang bisa menjelaskan cara membuat file header di C dengan contoh sederhana dari awal hingga akhir.
Adakah yang bisa menjelaskan cara membuat file header di C dengan contoh sederhana dari awal hingga akhir.
Jawaban:
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;
}
Untuk mengkompilasi menggunakan 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
berfungsi sebagai penjaga inklusi ganda.
Untuk deklarasi fungsi, Anda hanya perlu mendefinisikan tanda tangan, yaitu, tanpa nama parameter, seperti ini:
int foo(char*);
Jika Anda benar-benar ingin, Anda juga dapat menyertakan pengidentifikasi parameter, tetapi itu tidak perlu karena pengidentifikasi hanya akan digunakan dalam tubuh fungsi (implementasi), yang dalam hal header (tanda tangan parameter), itu tidak ada.
Ini menyatakan fungsi foo
yang menerima char*
dan mengembalikan int
.
Di file sumber Anda, Anda akan memiliki:
#include "my_header.h"
int foo(char* name) {
//do stuff
return 0;
}
extern
deklarasi variabel dan fungsi dalam file terpisah, secara historis disebut header , yang disertakan oleh #include
di depan setiap file sumber. Fungsi perpustakaan standar, misalnya, dinyatakan dalam header seperti <stdio.h>
. "
myfile.h
#ifndef _myfile_h
#define _myfile_h
void function();
#endif
myfile.c
#include "myfile.h"
void function() {
}
void function();
sebagai deklarasi tidak mencegah panggilan seperti function(42);
. Gunakan void
dalam deklarasi sepertivoid function(void);
file header berisi prototipe untuk fungsi yang Anda tetapkan dalam file .c atau .cpp / .cxx (tergantung jika Anda menggunakan c atau c ++). Anda ingin menempatkan # ifndef / # mendefinisikan sekitar kode .h Anda sehingga jika Anda memasukkan .h yang sama dua kali di berbagai bagian program Anda, prototipe hanya disertakan satu kali.
client.h
#ifndef CLIENT_H
#define CLIENT_H
short socketConnect(char *host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize);
#endif /** CLIENT_H */
Maka Anda akan mengimplementasikan .h dalam file .c seperti:
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;
}