Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用用户定义的头文件C_C_Header Files - Fatal编程技术网

使用用户定义的头文件C

使用用户定义的头文件C,c,header-files,C,Header Files,我不知道如何创建用户定义的头文件以及如何使用它,所以我想问一下我是否得到了正确的头文件 如果我有两个C程序,一个是demo.C,一个是tree.C,我可以创建一个头文件tree.h: #ifndef TREE_H #define TREE_H //some prototypes here int size(); int isFull(); #endif 在实际的tree.c程序中,我把所有的实际函数 #include "tree.h" int size() { //s

我不知道如何创建用户定义的头文件以及如何使用它,所以我想问一下我是否得到了正确的头文件

如果我有两个C程序,一个是demo.C,一个是tree.C,我可以创建一个头文件tree.h:

#ifndef TREE_H
#define TREE_H

//some prototypes here
int size();
int isFull();

#endif
在实际的tree.c程序中,我把所有的实际函数

#include "tree.h"

int size()
{
//some implementation
}

int isFull()
{
//some implementation
}
我想知道我是否有另一个名为demo.c的程序,我可以只包含tree.h头并使用tree.c中的函数吗?就像我们在Java中使用另一个类所做的一样?
我需要把它们放在同一个目录中吗?

简言之,是的,你可以只做
#在demo.c中包含“tree.h”

如果tree.h与demo.c不在同一目录中,您可以通过
#include“some/other/dir/tree.h”
包含其路径,也可以在编译器调用中传递include标志。例如,如果您使用的是gcc,则可以执行
-Isome/other/dir


demo.c只需要查看tree.h包含的函数原型,就可以知道它调用的函数类型。在您想将其编译成可执行文件之前,不需要tree.c。

因此,如果我想在demo.c中使用tree.c的调用函数,然后运行demo。我是否需要编译tree.c以及这两个可执行文件是否必须位于同一目录中?是的,您需要在编译器调用中包含这两个文件。例如,
gcc demo.c some/other/dir/tree.c