在C中创建自己的头文件



有人能从头到尾用一个简单的例子解释如何用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("%dn", 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*);

如果你真的想,你也可以包括参数的标识符,但这不是必要的,因为标识符只会在函数的主体(实现(中使用,而在头(参数签名(的情况下,它是缺失的。

声明函数foo,该函数接受char*并返回int

在你的源文件中,你会有:

#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++(。您希望在.h代码周围放置#ifndef/#定义,这样,如果在程序的不同部分包含两次相同的.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;
}

相关内容

  • 没有找到相关文章

最新更新