C++头文件和CPP怎么联系起来?
在写C++程序的时候,有时候想封装一些类或方法,所以就想写个库,以后自己慢慢用,现在就是将函数和类的定义写在头文件里面,函数体声明写在CPP文件里面,但是现在问题来了,这...
在写C++程序的时候,有时候想封装一些类或方法,所以就想写个库,以后自己慢慢用,现在就是将函数和类的定义写在头文件里面,函数体声明写在CPP文件里面,但是现在问题来了,这样写的话会说连接错误,找不到函数体,我.H和.CPP都是用的同样的文件名,放在同一个目录下面也不可以,请问怎么将头文件与源文件联系起来?我知道VC下面没有问题,但是别的编译器呢?比如DEV C++等
还有,我看了DEV C++自带的头文件,只看到函数的定义,没有看到声明,请问声明是放在哪里的?听说是LIB文件里面,但LIB是二进制的文件,它是如果做到让头文件与这些LIB文件相联系的呢?
我用的是上面的编译-运行按钮,参数什么的都是IDE自己生成的 展开
还有,我看了DEV C++自带的头文件,只看到函数的定义,没有看到声明,请问声明是放在哪里的?听说是LIB文件里面,但LIB是二进制的文件,它是如果做到让头文件与这些LIB文件相联系的呢?
我用的是上面的编译-运行按钮,参数什么的都是IDE自己生成的 展开
6个回答
推荐于2016-10-21
展开全部
可以直接把CPP源文件和头文件添加到工程,就可以实现关联;
h文件放声明,cpp文件要么实现h中的函数,要么是用h中的函数。不管是实现还是用,都需要知道返回值类型参数类型等来检查正确性(除非是同时声明和实现),这时候include一下头文件,编译的时候就可以找到声明了。
h和cpp的名字可以不一样,习惯上写成一样的。
一个声明只能有一个实现(就是返回值参数完全匹配的实现只有一个),不管这个实现在哪,链接的时候会去找的,找不到实现会报错。
h文件放声明,cpp文件要么实现h中的函数,要么是用h中的函数。不管是实现还是用,都需要知道返回值类型参数类型等来检查正确性(除非是同时声明和实现),这时候include一下头文件,编译的时候就可以找到声明了。
h和cpp的名字可以不一样,习惯上写成一样的。
一个声明只能有一个实现(就是返回值参数完全匹配的实现只有一个),不管这个实现在哪,链接的时候会去找的,找不到实现会报错。
展开全部
.h 就是只包含声明的头文件。里面没有你类中函数的具体实现方法
.cpp就是对应你那个.h的实现文件。里面有你类中函数的具体实现。
可以用vc++建个工程把他们都添加进来。再rebuid一下。就弄一起了
编译过程中也是顺序的执行。碰到#include<xxxx.h>然后它就取那个xxxx.h里面看你的声明,然后就接着向下编译。。 好像大概这个样子。
找不到函数体是不是说你在.h里面声明的函数在.cpp中没实现~~
我也是编程新手。如果有说错的还请各路英雄指点。。小弟谢谢啦
.cpp就是对应你那个.h的实现文件。里面有你类中函数的具体实现。
可以用vc++建个工程把他们都添加进来。再rebuid一下。就弄一起了
编译过程中也是顺序的执行。碰到#include<xxxx.h>然后它就取那个xxxx.h里面看你的声明,然后就接着向下编译。。 好像大概这个样子。
找不到函数体是不是说你在.h里面声明的函数在.cpp中没实现~~
我也是编程新手。如果有说错的还请各路英雄指点。。小弟谢谢啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
.CPP文件要加上你写的头文件的名字(#include"头文件名字"),不知道你加了没有,一般问题就在这。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
.h文件是用作声明和包含的头文件。
.cpp是实现文件
举例如下
//tract.h 文件
class tract : public Object
{
private:
int strtoint();
protected:
int such;
int left;
int top;
string length;
public:
tract();
~tract();
}
//tract.cpp文件
#include "tract.h"
void tract::tract()
{
}
//-----------------------
void tract::~tract()
{
}
//-----------------------
int tract::strtoint()
{
}
/------------------------
.cpp是实现文件
举例如下
//tract.h 文件
class tract : public Object
{
private:
int strtoint();
protected:
int such;
int left;
int top;
string length;
public:
tract();
~tract();
}
//tract.cpp文件
#include "tract.h"
void tract::tract()
{
}
//-----------------------
void tract::~tract()
{
}
//-----------------------
int tract::strtoint()
{
}
/------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译的时候加进去
如 myclass.h myclass.cpp main.cpp
这样编译:
g++ myclass.cpp main.cpp -o a.out
如 myclass.h myclass.cpp main.cpp
这样编译:
g++ myclass.cpp main.cpp -o a.out
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询