文档章节

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

种地瓜
 种地瓜
发布于 2016/10/01 00:35
字数 364
阅读 167
收藏 1
点赞 0
评论 0

 

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

 

一个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中的函数

}

© 著作权归作者所有

共有 人打赏支持
种地瓜
粉丝 9
博文 174
码字总数 44807
作品 0
深圳
程序员
C++ STL编程轻松入门 2

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

暖冰
2015/11/21
0
0
stdafx.h、stdafx.cpp两个文件的作用

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

DDwang
2015/07/29
0
0
基于Visual C++6.0的DLL编程实现

基于Visual C++6.0的DLL编程实现 一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上 Windows操作系统中几乎...

晨曦之光
2012/03/09
0
0
MFC、SDK和API有什么区别

MFC、SDK和API有什么区别 MFC Microsoft Foundation Class 微软函数类库 SDK (Software Development Kit,软件开发包) 软件开发包通常是一系列API函数,而MFC 是由微软公司提供的对API封装...

huanongkou
2013/03/20
0
0
Microsoft Visual C++ 6.0 各类工程配置说明

基于 对话 框( / 单 文档 / 多文档)的 MFC 程序 #include <afxdtctl.h> // MFC support for Internet Explorer 4 Common #include <afxwin.h> // MFC core and standard components #inclu......

晨曦之光
2012/03/09
0
0
在Win32应用程序中使用MFC类库(转)

由于MFC中的辅助类,如 CFileDialog,CFileFind,CString等使用起来非常的方便,如果用API来完成相应的工作,则需要自己完成大量的重复工作,使用 MFC的辅助类可以节省大量的开发时间,具体方法...

Amamatthew
2014/06/23
0
0
CSDN回帖得分大全(近两年)

√ vs2005调用dll的时候Initialize()函数返回错误 [VC/MFC 基础类] √ 为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [VC/MFC 界面] √ CFileFind::FindFile 支持通配...

junwong
2012/03/09
0
0
内存泄露:a CDynLinkLibrary object at...的解决

这两天在设计一个项目,独立了几个DLL模块。昨天勉强把前段工作做完了,需要的DLL也都挂进了EXE文件之中,暗自高兴了一把。不过晚上在看的时候,发现VS2005输出窗口提示有内存泄露: a CDyn...

郭廷钧
2011/01/29
0
0
C到C++ 快速过度 A C++基本框架

单从语法上讲,C++继承了C中几乎所有的关键字,因此在C++中使用C语言完全没有问题。 需要注意的是,printf() 和 scanf() 是库函数,他们并不是C语言的一部分。比如,你不包含头文件stdio.h的...

傅芃芃
2015/01/19
0
0
C++中头文件、源文件之间的区别与联系

.h头文件和.cpp文件的区别 疑惑1:.h文件能够编写main函数吗? 实验: 编写test.h文件,里面包含main函数 若直接编译g++ test.h -o test,通过file命令 file test,得到如下结果test: GCC p...

风筝Fergus
2013/04/17
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小...

猫咪编程
16分钟前
0
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
39分钟前
1
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
2
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
0
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
6
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
1
0
gin endless 热重启

r := gin.New()r.GET("/", func(c *gin.Context) {c.String(200, config.Config.Server.AppId)})s := endless.NewServer(":8080", r)s.BeforeBegin = func(add string) ......

李琼涛
昨天
1
0
JAVA模式之代理模式

平时一直在用spring,spring中最大的特效IOC和AOP,其中AOP使用的就是代理模式.闲着无聊,随手写了一个代理模式,也记录下代理模式的实现Demo. 比如现在有一个场景是:客户想要增加一个新的功能,...

勤奋的蚂蚁
昨天
0
0
ES15-JAVA API 索引管理

1.创建连接 创建连接demo package com.sean.esapi.client;import java.net.InetSocketAddress;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.clien......

贾峰uk
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部