Создание собственного файла заголовка в C

Может кто-нибудь объяснить, как создать файл заголовка на C с простым примером от начала до конца.

Ответ 1

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

Ответ 2

#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;
}

Ответ 3

myfile.h

#ifndef _myfile_h
#define _myfile_h

void function();

#endif

myfile.c

#include "myfile.h"

void function() {

}

Ответ 4

Заголовочные файлы

содержат прототипы для функций, которые вы определяете в файле .c или .cpp/.cxx(в зависимости от того, используете ли вы 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;
}