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