在C中创build自己的头文件

任何人都可以解释如何创build一个头文件在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*); 

如果你真的想要的话,你也可以包含参数的标识符,但没有必要,因为标识符只能用在函数的主体(实现)中,如果是头(参数签名),它就会丢失。

声明了接受一个char*并返回一个int的函数foo

在您的源文件中,您将拥有:

 #include "my_header.h" int foo(char* name) { //do stuff return 0; } 

myfile.h

 #ifndef _myfile_h #define _myfile_h void function(); #endif 

myfile.c文件

 #include "myfile.h" void function() { } 

头文件包含您在.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 */ 

然后你可以在.c文件中实现.h文件,如下所示:

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