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