文档章节

一个cpp文件能不能包含另外一个cpp文件

种地瓜
 种地瓜
发布于 2016/10/01 00:35
字数 364
阅读 211
收藏 1

 

在前几天的一个面试中,有一个题目是

 

一个cpp文件能不能包含另外一个cpp文件,会有什么样的问题?

 

我看着题目,谁这么做啊,我没这么做过,肯定不知道这其中会出现的问题,当即答我不知道会出现什么问题,因为我也没试过

 

回来一查资料,用编译器一写,就会发现

多重定义了,相互冲突了

到网上查资料,分析

一个程序到编写代码到最冲呈现给用户的结果,就是编译-连接的过程

若有文件1.cpp,2.cpp  其中2.cpp中包含了1.cpp

从编译的角度来说,源文件都是编译各自的文件,2.cpp包含了1.cpp那么生成的目标文件2.obj也是包含了1.cpp的结果,而1.cpp编译产生1.obj,那么,当他们在链接的时候肯定会产生重复定义的错误

所以,一般源文件都会只包含系统的头文件和用户自定义的头文件,而用户自定义的头问津主要是定义一些结构体之类的。

 

那么,如果2.cpp需要调用1.cpp的函数呢  

使用extern

//1.cpp

void func1()

{

}

void func1()

{

}

 

2.cpp

extern void func1();

extern void func2();

 

void min()

{

        //调用1.cpp中的函数

}

© 著作权归作者所有

共有 人打赏支持
上一篇: 堆和栈的区别
下一篇: void *指针
种地瓜
粉丝 9
博文 177
码字总数 45450
作品 0
深圳
程序员
私信 提问
C++中关于string类型究竟能不能用cout输出的问题

今天在visual studio 学习c++的string类,发现string的不能用c++的cout函数来输出,后来查了下网上的资料发现应该是可以的,最后才发现自己没有进行导入c++的默认的string的头文件,所以它默...

DannyCoder
2018/09/02
0
0
stdafx.h、stdafx.cpp两个文件的作用

stdafx.h、stdafx.cpp是干什么用的?为什么我的每一个cpp文件都必须包含stdafx.h? 这两个文件用于建立一个预编译的头文件.PCH和一个预定义的类型文件STDAFX.OBJ。 由于MFC体系结构非常大,包...

DDwang
2015/07/29
0
0
C++ STL编程轻松入门 2

1.3.3 STL和GP,GP和OOP   正如前面所提到的,在STL的背后蕴含着泛型化程序设计(GP)的思想,在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的...

暖冰
2015/11/21
0
0
C++中extern “C”含义深层探索

1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言...

长平狐
2013/01/06
38
0
dll的概念 dll导出变量 函数 类 (转)

1、 DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。 静态链接库与动态链接库的区别: (1)静态链接库与动态链接库都是共...

长平狐
2012/10/08
685
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
24分钟前
2
0
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
6
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部