首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请教各个Cpp之间的代码是不是相互透明的

2012-08-10 
请问各个Cpp之间的代码是不是相互透明的?就是说,如果我在A.cpp里有一个A函数,在B.cpp里是Main函数,而且A.c

请问各个Cpp之间的代码是不是相互透明的?
就是说,如果我在A.cpp里有一个A函数,在B.cpp里是Main函数,而且A.cpp和B.cpp施工同一个工程里的,那么可以在Main函数里直接调用A函数吗?还是要加函数原型声明?

[解决办法]
必须共同链接
[解决办法]
对,简单加个声明就行了
[解决办法]
首先,你要懂得程序编译链接的过程

代码变成可执行文件需要两步,编译和链接
编译以cpp文件为单位,每个cpp文件编译成一个模块
链接就是把这些模块组合起来,成为一个可执行的程序

至于“#include”预编译命令,它的作用就是单纯的复制,把所要包含的文件的代码全部复制到当前文件中
所以这些命令叫做预编译命令,它发生在编译之前

然后,你使用的应该是VC之类的集成环境,而不是单纯的编译器
纯粹的编译器,编译和链接这两步是分开的,一目了然
集成环境只需要按一个按钮就可以完成这两步,的确是很方便,但初学者根本无法了解其原理,因此就有了各种各样的错误

以VC为例,它在编译这一步,编译的cpp文件就是当前工程/解决方案中包含的cpp文件
哪怕某个cpp文件和这个工程/解决方案一点关系都没有,只要你“添加到工程/解决方案”了,编译器就会把它编译成模块
然后在链接这一步,把所有编译过的模块链接为一个可执行文件

至于你的具体问题
要使用其他cpp文件中的函数,首先要在使用前声明函数,这样编译该cpp文件的时候编译器会知道“有这么一种函数供本模块中的代码调用”,编译阶段就没问题了
链接时,编译器会自动寻找所有需要链接到一起的模块中有没有这种格式的函数本体,如果恰好找到一个满足条件的,那就将本模块中使用这个函数的地方链接到该函数的具体代码处,如果没找到或者找到多个,那就报链接错误,无法生成可执行程序

热点排行