c++ 编译器 链接器 如何运行 原理是什么
发布网友
发布时间:2022-04-24 23:59
我来回答
共3个回答
热心网友
时间:2023-10-16 00:03
#include "fun.cpp"
这一句使得在编译的时候fun.cpp全文将被复制到主程序文件中,在主文件里面当然能使用了,这不是文件作用域的问题。
至于前一个问题,你没给出程序的全文,我也看不出来。
另外:对楼主的回复:
你对fun.cpp也使用include的话,则fun.cpp中的内容肯定也是要复制过去的,只要你用include。(include这个保留字的含义就是告诉编译器除了读包含include这个语句的文件之外还要读取include语句包含的文件).一般来说,我们在include后面包含的都是xxxx.h这样的头文件,这是因为在头文件里面包含的都是声明而不是定义,在一个工程中声明可以重复多次但是定义(不管它在哪个文件里面定义)只能一次。像楼主这样包含fun.cpp的话肯定会导致重复定义的(fun.h和fun.cpp编译之后形成的fun.obj里面有函数的实现,main.cpp由于把fun.cpp里面的内容include进来所以里面也有函数的实现).至于加了static后为什么对这是因为static保留字*了其后所定义的函数或变量只能在本文件中使用.
建议楼主把主程序文件中的#include"fun.cpp"改成#include"fun.h"再试试,另外,找本书看看include和static(主要是静态全局变量而不是静态局部变量)相关的内容。
对楼主的再次答复:.h和.cpp中包含的东西是不一样的。一般来说,.h中放置声明语句(主要是供编译器进行类型及函数原型检查),而.cpp中放置数据的定义以及函数的实现等。而#include语句只包含.h文件。这一点我不知道是不是c语言的规定,但是一般来说编程都是这样做的。
如果不怕困难,建议你去看一本书,linker and loader 中文版+英文版,网址是:http://download.csdn.net/source/331053
热心网友
时间:2023-10-16 00:03
楼主对于#include和链接的理解错了,去网上找资料学习一下吧。 涉及到的内容多了,很难在这里给你讲清楚。
热心网友
时间:2023-10-16 00:04
这个问题确实很难讲清楚哦.如果你还是一个在校学生的话,这个你需要去图书馆看看有没有相关书籍,你可以去看看.
编译器编译原理:预处理,编译,汇编,链接各步骤详解
编译器编译原理:预处理,编译,汇编,链接各步骤详解 C和C++编译器的编译流程主要分为四个阶段:预处理、编译、汇编和链接。预处理阶段主要处理源代码中的宏定义和包含文件,将包含的文件内容插入到源代码中。编译阶段则检查代码的语法正确性,并将其转换为汇编语言。汇编阶段将汇编语言转换为二进制机器指...
如何对光传输设备进行调试和维护?
对光传输设备进行调试和维护,需要掌握以下关键点:1. **熟悉设备性能**:深入了解OTN/DWDM等光传输产品的性能特点,确保能够熟练使用设备。2. **按规范操作**:依据产品说明书和维护手册进行调试和维护,确保操作步骤正确无误。3. **故障排查**:掌握常见故障现象及处理方法,能够迅速定位问题并进行修复。4. **性能监测**:定期监测设备性能指标,确保设备运行状态良好,及时发现并解决潜在问题。5. **专业培训**:参与相关培训,不断提升自身技能水平,以更好地应对各种挑战。通过以上措施,可以确保光传输设备的稳定运行,提升网络可靠性和智能…对光传输设备进行调试和维护需要掌握一定的专业知识和技术,包括光功率计、光谱分析仪等测试仪器的使用,以及对光传输系统的工作原理和性能指标的深入理解。深圳市光派通信技术有限公司提供专业的技术支持和服务,可为客户提供全面的光传输设备...
C语言编译原理是什么?
1、预处理阶段:主要工作是将头文件插入到所写的代码中,生成扩展名为“.i”的文件替换原来的扩展名为“.c”的文件,但是原来的文件仍然保留,只是执行过程中的实际文件发生了改变。(这里所说的替换并不是指原来的文件被删除)2、汇编阶段:插入汇编语言程序,将代码翻译成汇编语言。编译器首先要检查...
c++ 编译器 链接器 如何运行 原理是什么
(include这个保留字的含义就是告诉编译器除了读包含include这个语句的文件之外还要读取include语句包含的文件).一般来说,我们在include后面包含的都是xxxx.h这样的头文件,这是因为在头文件里面包含的都是声明而不是定义,在一个工程中声明可以重复多次但是定义(不管它在哪个文件里面定义)只能一次。像楼主这样...
C语言工作原理
3、汇编阶断,这个阶断是汇编编译阶断,在Linux上C语言的汇编器是as命令,这个阶断会将汇编指令编译成二进制机器码。4、链接阶断,这个阶断是会将汇编阶断生成的机器码目标文件,装载成一个系统可执行的文件,在Linux平台以ELF格式进行组装,在Windows平台上以PE格式进行组装。在Linux平台上的链接器命...
先生们,女神们,快来看啊…… 请问下,c语言通过编译器转换成汇编语言,那...
然后链接器根据生成的二进制文件,按照pe结构,生成一个exe文件。当你双击运行这个文件的时候,windows的pe loader 程序会将exe文件内存文件映射到虚拟内存中(即windows上的页文件,也就是c盘中的pagefile文件),CPU的内部有一个震荡器(震荡器的原理很简单,平时看到的电铃就是这个原理),震荡器不断的...
编译器的发展史
一个现代编译器的主要工作流程如下:源程序(sourcenbsp;code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(objectnbsp;code)→连接器(链接器,Linker)→可执行程序(executables)nbsp;目录nbsp;[隐藏]1nbsp;工作原理nbsp;2nbsp;编译器种类nbsp;3nbsp;预处理器(...
谁知道链接器做什么
链接器做些什么 链接器之所以存在或者产生,基本上是由于程序开发的模块化。这里讲的模块,主要是编译概念上的模块,通常他们按照功能划分,比如一个.c或者.cpp文件就是一个编译单元,就是一个模块,编译后就产生一个.o目标文件。为了最终生成一个可执行文件、静态库或者动态库,就需要把各个编译单元按照特定的约定组合到...
编译器的发展史
一个现代编译器的主要工作流程如下:源程序(sourcenbsp;code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(objectnbsp;code)→连接器(链接器,Linker)→可执行程序(executables)nbsp;目录nbsp;[隐藏]1nbsp;工作原理nbsp;2nbsp;编译器种类nbsp;3nbsp;预处理器(...
用C语言编写的源程序必须经过编译连接后,生成扩展名为.EXE的可执行文 ...
建议看看计算机一些原理,像你说的这个问题我会想到,计算机最终只能识别二进制码,所以其实不管我们一切啥语言,最终都是通过编译器编译成二进制码,计算机才能识别 而去运行,而C语言编写的程序,肯定是要经过一系列的编译,链接,生成可执行的文件。在windows系统中,执行文件都是.exe为扩展名的。不过在...
给萌新的C/C++环境搭建攻略(VSCode和MSYS2)
文本文件是不能运行的,所以我们需要把写好的代码翻译成机器能够执行的形式,这个过程就被称为编译。用来编译代码生成可执行文件的程序被称为编译器,目前主流的C/C++编译器有MSVC(cl.exe)、GCC(gcc/g++)和LLVM(clang/clang++)准确地说源代码文件要变成可执行文件需要进行预处理、编译、汇编、链接等...