我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用Include Cpp

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用Include Cpp

这篇文章主要介绍“如何使用Include Cpp”,在日常操作中,相信很多人在如何使用Include Cpp问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Include Cpp”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

问题一:这啥玩意?

C++是一门高深莫测的语言,什么写法都有,而且#include本质上就是复制粘贴代码,我也不敢说别人写的不对,可能开发者是C++大佬,写了一些我们普通人无法理解的代码也是正常的。

问题二:整个项目都是这种引用方式,不会导致某一函数重复定义吗?

为此我查了一些资料,并做了一些测试:

代码段1:

// file1.cc #include <iostream>  using std::cout;   void ddd() { cout << "ddd \n"; }

代码段2:

// file2.cc #include "file1.cc"  int main() {     ddd();     return 0; }

代码段3:

// filec.cc #include "file1.cc"  void f() {     ddd(); }

然后三个源文件一起编译链接:

如何使用Include Cpp

发现报错了,的确出现了multiple definition的错误,确实一个函数不能有多个定义。我又改了下代码:

// file1.cc #include <iostream>  using std::cout;  inline void ddd() { cout << "ddd \n"; }

将ddd函数改成了内联函数,然后三个源文件一起编译链接:

如何使用Include Cpp

编译成功且正常输出。

我将普通函数改成成员函数又测试了一次:

代码段1:

file1.cc #include <iostream>  using std::cout;  struct A {     int a_;     void func(); };  void A::func() { cout << "file1.cc a " << a_ << "\n"; }

代码段2:

// file2.cc #include "file1.cc"  int main() {     A a;     a.func();     return 0; }

代码段3:

// filec.cc #include "file1.cc"  void f() {     A a;     a.func(); }

然后一起编译链接:

如何使用Include Cpp

发现成员函数这样定义也会报错,也会有multiple definition的错误,我又改了一下代码:

// file1.cc #include <iostream>  using std::cout;  struct A {     int a_;     void func() { cout << "file1.cc a " << a_ << "\n"; } };

将函数的定义搬运到了类中,编译链接:

程序正常运行,熟悉C++的朋友可能都知道原因,类中定义的函数就相当于是内联函数,所以编译链接不会有问题。

所以得出结论:

  • 内联函数的定义可以被多个源文件引入(内联函数到最后其实不是个函数)

  • 类的定义可以被多个源文件引入(这是必须的,要不然编译器怎么知道类的对象布局)

问题三:貌似平时使用的模板就多数都定义在头文件中,这个不会导致某一函数重复定义吗?

直接看三段代码吧:

代码段1:

// temp.h #include <iostream>  template <typename T> struct B {     T a;     void ff() { std::cout << "temph \n"; } };

代码段2:

// filec.cc #include "temp.h"  void f() {     B<int> a;     a.ff(); }

代码段3:

// file2.cc #include "temp.h"  int main() {     B<int> a;     a.ff();     return 0; }

所有源文件编译链接:

如何使用Include Cpp

发现编译成功且正常运行,那如果函数的定义不在类内会怎么样呢?

// temp.h #include <iostream>  template <typename T> struct B {     T a;     void ff(); };  template <typename T> void B<T>::ff() {     std::cout << "temph \n"; }

程序编译链接后:

如何使用Include Cpp

编译链接成功且输出正常结果。

所以得出结论:编译器对模板做了特殊处理,不论模板类中函数是否内联,都可以正常链接。

这个结论其实不是我得出的(所以可信),而是gnu文档(参考资料的最后一个链接)写的,上述代码只是为了印证结论。

大体意思如下:编译器对模板做了特殊处理,如果函数不是内联函数,那可以有两种处理方式:

  1. 链接时随机选择一个定义,其它的丢弃掉

  2. 编译器会把函数的定义单独提出来,提到单独一个文件中,对此文件单独编译,就不会出现重复定义的问题。

到此,关于“如何使用Include Cpp”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用Include Cpp

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python include标签如何使用

这篇文章主要介绍了python include标签如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python include标签如何使用文章都会有所收获,下面我们一起来看看吧。include标签如何使用
2023-07-05

JSP的include指令如何使用

JSP的include指令用于将一个JSP页面包含到另一个JSP页面中。使用include指令可以实现代码的重用和模块化。下面是include指令的使用方法:1. 在需要包含其他JSP页面的JSP页面中,使用以下方式包含另一个JSP页面:`
2023-08-12

vscode如何创建cpp文件

在 Visual Studio Code 中创建 C++ 文件可以按照以下步骤进行:打开 Visual Studio Code 编辑器。在菜单栏中选择 “文件” -> “打开文件夹”,选择一个文件夹作为你的工作区。在侧边栏中点击右上角的
vscode如何创建cpp文件
2024-03-12

django中include怎么使用

这篇文章将为大家详细讲解有关django中include怎么使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文教程操作环境:windows7系统、django2.1,DELL G3电脑。1.使用说明i
2023-06-14

vbscript如何实现include

这篇文章主要为大家展示了“vbscript如何实现include”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vbscript如何实现include”这篇文章吧。任何真正实用的工程开发都必然是多
2023-06-08

php中的include怎么使用

今天小编给大家分享一下php中的include怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在PHP中,includ
2023-06-29

jquery include方法怎么使用

本篇内容介绍了“jquery include方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是jQuery include方法
2023-07-05

c++如何调用另一个cpp中的函数

要调用另一个cpp文件中的函数,需要进行以下步骤:1. 将被调用的函数声明为extern:在被调用函数所在的cpp文件中,将函数的声明改为extern,表示该函数可以被其他cpp文件调用。例如,如果被调用函数定义如下:```cppvoid
2023-08-08

PHP中怎么使用include和require

这篇文章主要介绍PHP中怎么使用include和require,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、P
2023-06-14

linux下使用g++编译cpp工程的方法

C++编程中相关文件后缀1.单个源文件生成可执行程序下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: #include int main(i
2022-06-03

如何编写NOT include的源码

本篇内容主要讲解“如何编写NOT include的源码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何编写NOT include的源码”吧!(1) 从评论区能看出,很多朋友都找到了谜题的突破口
2023-06-04

PHP中include和include_once怎么使用

在PHP中,include和include_once用于将一个文件的内容包含到另一个文件中。使用include时,语法如下:```phpinclude '文件路径';```其中,文件路径可以是相对路径或绝对路径。相对路径是相对于当前文件的路
2023-08-11

使用include来动态指向HTML

在HTML中,可以使用`include`指令来动态地包含其他HTML文件。首先,在需要包含其他HTML文件的位置添加以下代码:```html```其中,`/path/to/your/file.html`是你想要包含的HTML文件的路径。然后
2023-09-26

Ubuntu环境下使用G++编译CPP文件

第一次用g++编译cpp文件的时候报了undefined reference的错误,自定义类中的函数全部都无法找到,查找资料后发现调用的类是需要链接的,本文以一个小例子描述编译的过程。其中class2类调用了class1类的成员函数,依赖于
2022-06-04

ABAP的include关键字怎么使用

这篇文章主要介绍“ABAP的include关键字怎么使用”,在日常操作中,相信很多人在ABAP的include关键字怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ABAP的include关键字怎么使用
2023-06-02

PHP中的include和require怎么使用

本篇内容介绍了“PHP中的include和require怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概要require() 语句的
2023-06-27

编程热搜

目录