首页 > 编程知识 正文

cpp是什么文件格式(cpp文件)

时间:2023-05-03 18:13:34 阅读:92631 作者:3922

今天,打开自己以前写的代码,突然觉得如果在main函数中使用很多自己实现的函数,把它们放入main.cpp文件就太臃肿了。 调试非常不方便。 能把这些自己实现的函数放在别的文件里吗?

但是,不能将这些函数放入. h文件中。 因为书上说. h文件最好只包含结构、类等声明,函数的实现最好放入. cpp文件。 现在,让我们将这些函数放入. cpp文件中。 于是,我建立了新的2.cpp文件,把自己实现的函数都放入其中。 然后,将该2.cpp文件放置在与main.cpp文件相同的目录中。 在main.cpp上,#include'2.cpp ' .被重新编译并运行,一切正常。 好像成功了。

在关掉这个项目之后,我想再次打开它修改自己实现的函数。 突然发现VC6.0项目的Sourcs File目录下只有main.cpp没有我的2.cpp,于是右键单击将2.cpp文件添加到了Siurce File目录下。 再次编译,发生了错误。 发生了重新定义错误。 错误如下。

这怎么可能? 为什么会发生重新定义的错误呢? 我在main.cpp文件中明明没有关于2.cpp的函数说什么。 如果在此之前没有将2.cpp文件添加到项目目录中,是不是没错?

看到这里,你可能会想这是什么。 由于每个. cpp文件在编译项目时分别编译并最后连接,因此在编译main.cpp文件时,您会看到main.cpp文件中有#include“2.cpp”文件请不要忘记,2.cpp文件也是与. cpp文件分开编译的,是在编译2.cpp文件生成2.obj文件之后。 将所有编译的. obj文件连接到生成的. exe文件。 此时,可以看到2.obj的内容main.obj中也有。 因为main.cpp有#include“2.cpp”。 所以就会出现重复定义的错误。

此时,可能会觉得将2.cpp文件改名为2.h,在main.cpp文件中设为#include“2.h”即可。 因为. h文件不会单独编译。 确实如此。 2 .将CPP更改为2.h后,项目目录中可以添加2.h文件,也可以不添加。 但是,他说, h文件最好只包含声明。 (不失为解决问题的方法)

总而言之,这违背了将自己实现的函数放入同一文件中调用时,放入. h文件中只放入. h文件中比较好的原则。 如果. cpp文件包含与main.cpp的#include对应的. cpp文件,则无法将该. cpp文件添加到项目目录中。 这样看起来不像整体。 不能在项目目录中显示任何. cpp文件。

那么,解决方法到底是什么? 答案是扩展

extern可以位于变量或函数之前,指示变量或函数的定义在不同的文件中,当变压器遇到这个变量和函数时,可以提示在不同的模块中查找其定义。 另外,extern也可以用于链接指定。

有关extern的更详细的说明,请参阅百度百科

因此,在1.cpp中调用2.cpp的函数时,只需要在1.cpp中声明在1.cpp中调用的函数,而不是在#include“2.cpp”中添加关键字extern即可。 示例如下所示

//2.cpp

void func1()

//函数的实现

}

int func2()。

{

//.

}

.

//1.cpp调用2.cpp的函数

# #包含所需的头文件

扩展语音功能1 (;

扩展函数2 (;

int主() )

{

2 .现在可以调用CPP的函数func1和func2了

返回0; }

2 .请注意将CPP文件放在项目目录下

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。