C++ c语言中的文件包含

C++ c语言中的文件包含,c++,codeblocks,C++,Codeblocks,我不是一个程序员,如果问题是蹩脚的,我很抱歉。如果它是断章取义的直接我到适当的链接 如果我有一个头文件,比如“file.h”,我在其中声明了几个函数。除了在“file.c”中给出定义外,还有什么方法可以让我为不同的函数使用不同的.c文件,这样头文件仍然是file.h(它具有所有相应的函数)。 我正在使用代码块 感谢您的帮助…… 将getNode声明为接受单个int参数并返回指向节点的指针。然而,您将getNode定义为不接受任何参数并返回指向节点的指针 您需要改进您的声明或定义,并且鉴于您使用了

我不是一个程序员,如果问题是蹩脚的,我很抱歉。如果它是断章取义的直接我到适当的链接

如果我有一个头文件,比如“file.h”,我在其中声明了几个函数。除了在“file.c”中给出定义外,还有什么方法可以让我为不同的函数使用不同的.c文件,这样头文件仍然是file.h(它具有所有相应的函数)。 我正在使用代码块

感谢您的帮助……

getNode
声明为接受单个
int
参数并返回指向
节点的指针。然而,您将
getNode
定义为不接受任何参数并返回指向
节点的指针

您需要改进您的声明或定义,并且鉴于您使用了
getNode
,我将改进您的定义:

node* getNode(int data)
{
    node* temp=new node;
    temp->data = data; // <- use the argument
    temp->left=NULL;
    temp->right==NULL;
    temp->next==NULL;
    return temp;
}
node*getNode(int数据)
{
node*temp=新节点;
temp->data=data;//左=NULL;
temp->right==NULL;
temp->next==NULL;
返回温度;
}

至于新的问题,头文件只是源代码块,通过预处理器包含


按照惯例,您可以使用它来声明全局变量、函数和数据结构。但是,您必须注意确保这些声明有意义,并且与应用程序的其余部分同步。

Q1:是的,只需为每个函数使用不同的实现文件,然后链接它们即可

事实上,这是一种将代码分解为单独编译单元的好方法。它不仅使查找相关代码变得更容易,而且如果某些函数从未被引用,还可以减少可执行文件的大小


问题2:您没有定义函数
getNode(int)
,而是定义了
getNode()

您在treelib.h中定义的getNode的定义有一个参数。您在treelib.cpp中的getNode实现没有。因此在treelib.h中,它被定义为“node*getNode(int)”;但在treelib.cpp中,它被实现为“node*getNode()”。这两者不一样。更改treenode.cpp中的版本以匹配头文件中的定义即可。头文件通常用于声明结构/类、常量、函数原型等。但是头文件和源文件之间没有任何关系,除了您赋予它们的含义;没有“每个源文件一个头文件”之类的东西

您可以根据需要拆分代码
file.h
并不一定意味着任何地方都应该有
file.cpp
文件。这只是惯例


关于您的问题,您只是错误地实现了您的函数(您的源文件中缺少一个参数)。

对于您的第一个问题,是的,您可以,这就是它

如果您有一个标题为
header.h
的头文件,并且希望它包含
function.c
中包含的函数以及其他库中包含的函数,则只需执行以下操作 在标题中。h:

#include "header.c"
#include <other.h>
#包括“header.c”
#包括
其中,
other.h
是包含其他函数的函数头文件


N.B.:答案的这一部分涉及OP删除的问题的一部分。


对于下一个问题,您的
getNode
函数声明似乎与您试图实现它的方式不匹配。(创建为void函数,但使用整数参数调用)。要解决您的问题,我首先要解决这个问题。

我想不出这个概念。。。这是我的主要文件,哪个概念?你有两个问题…:Pin main我已经包括了header.h,它有函数diff()和在header.h我给出了diff()原型和在header.c如果我想在header.h中有一个更多的函数原型,我有diff()定义。我想在diff.h文件中有diff()函数定义,我怎样才能在
header.h
中实现我的目标,像往常一样使用
#include“header.c”
,也可以包含另一个
.h
文件,该文件包含其他函数,如
#include
。。。其中已针对
diff.c
设置了
diff.h