Herkes C'de bir başlık dosyasının nasıl oluşturulacağını başından sonuna kadar basit bir örnekle açıklayabilir.
Herkes C'de bir başlık dosyasının nasıl oluşturulacağını başından sonuna kadar basit bir örnekle açıklayabilir.
Yanıtlar:
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 kullanarak derlemek
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
çift inklüzyon koruması olarak görev yapar.
İşlev bildirimi için yalnızca imzayı, yani parametre adları olmadan, şöyle tanımlamanız gerekir:
int foo(char*);
Gerçekten istiyorsanız, parametrenin tanımlayıcısını da ekleyebilirsiniz, ancak gerekli değildir, çünkü tanımlayıcı yalnızca bir başlık (parametre imzası) durumunda eksik olan bir işlevin gövdesinde (uygulama) kullanılır.
Bu, a'yıfoo
kabul eden char*
ve an döndüren işlevi bildirirint
.
Kaynak dosyanızda:
#include "my_header.h"
int foo(char* name) {
//do stuff
return 0;
}
extern
değişkenlerin bildirimleri ve tarihsel olarak adlandırılan ayrı bir dosyada, fonksiyonlar başlık dahil olup, #include
her kaynak dosyasının ön. standart kütüphanenin işlevleri, örneğin, gibi başlıklarda beyan edilmektedir <stdio.h>
."
myfile.h
#ifndef _myfile_h
#define _myfile_h
void function();
#endif
myfile.c
#include "myfile.h"
void function() {
}
void function();
bir deklarasyon gibi çağrıları engellemez function(42);
. Kullanım void
içinde bildiriminde gibivoid function(void);
başlık dosyaları .c veya .cpp / .cxx dosyasında tanımladığınız işlevler için prototipler içerir (c veya c ++ kullanmanıza bağlı olarak). .H kodunuzun etrafına # ifndef / # tanımları yerleştirmek istersiniz, böylece aynı .h'yi programlarınızın farklı bölümlerine iki kez eklerseniz, prototipler yalnızca bir kez eklenir.
client.h
#ifndef CLIENT_H
#define CLIENT_H
short socketConnect(char *host,unsigned short port,char *sendbuf,char *recievebuf, long rbufsize);
#endif /** CLIENT_H */
Ardından, .h dosyasını aşağıdaki gibi bir .c dosyasına uygularsınız:
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;
}