C代码如何跑起来(程序编译和预处理)
c代码
- 1.集成开发环境(IDE)
- 2.如何跑起来
- 3.以VS为例
1.集成开发环境(IDE)
集成开发环境包含如下
- 编辑器:用来编写代码,并且给代码着色,以方便阅读;
- 代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程;
- 调试器:观察程序的每一个运行步骤,发现程序的逻辑错误;
- 项目管理工具:对程序涉及到的所有资源进行管理,包括源文件、图片、视频、第三方库等;
- 漂亮的界面:各种按钮、面板、菜单、窗口等控件整齐排布,操作更方便
简单来说是一系列开发工具的组合套装。这就好比台式机,一个台式机的核心部件是主机,有了主机就能独立工作了,但是我们在购买台式机时,往往还要附带上显示器、键盘、鼠标、U 盘、摄像头等外围设备。
常见的Visual Studio、Dev C++、Xcode、Visual C++ 6.0都是集成开发环境。
2.如何跑起来
先介绍两种环境:
翻译环境:将环境中的源代码转化为可执行的机器指令
执行环境:实际用于执行代码
描述如下:一个源文件经过编译,链接生成可执行的程序,然后运行。
(每个源文件都会经过编译器处理,生成各自对应目标文件,多个目标文件经过链接器和链接库的共同作用,生成可执行程序。)
下面进行具体分析:
linux环境下
一
预处理完成的工作(文本操作)(.c):
1.头文件的包含,将头文件中的代码加入进来(#include,#define ,#pragma)
2.#define定义符的替换
3.删除注释
编译c语言代码转化为汇编代码(.s)
1.语法分析
2.词法分析
3.语义分析
4.符号汇总
汇编(.o)
把汇编代码转化为二进制指令(机器指令),形成符号表
二
链接
- 合并段表
- 符号表的合并和重定位
3.以VS为例
从VS文件中看:.c(源文件) .obj(目标文件) .exe(可执行文件),如下图所示
两个.c文件编译,链接生成可执行的程序,然后运行。
C代码如何跑起来(程序编译和预处理)相关推荐
- C语言程序设计 | 程序编译与预处理
目录 一.程序的翻译环境和执行环境 二.详解编译+链接 1.翻译环境 2.编译 2.1预编译/预处理 2.2编译 2.3汇编 三.预处理详解 1.预定义符号 2.#define 2.1#define定 ...
- 探索C语言程序奥秘——C语言程序编译与预处理
⭐️前面的话⭐️ 大家好!我们所编写的C语言代码是这么变成了可以执行的程序的呢?这一切都是编译器的功劳,这篇文章将带大家认识代码是这么变成程序的.
- github的python代码怎么跑_python程序员一步两步教你使用GitHub!
作为一个Python爬虫师一步步教你们怎么把代码放入到github 中! 首先呢我们下载一个git的客户端 学习Python中有不明白推荐加入交流群号: 前面548中间377后面875 群里有志同道合 ...
- c语言条件编译include,7.1编译与预处理-include-c学习 | 时刻需
7.1.25文件包含 文件包含是C语言预处理的另一个重要功能,用"#include"来实现,将一个源文件的全部内容包含到另一个源文件中,成为它的一个部分,文件包含的一般格式为: # ...
- python做好的程序如何变成小程序-使用python编写简单的小程序编译成exe跑在win10上...
每天的工作其实很无聊,早知道应该去IT公司闯荡的.最近的工作内容是每逢一个整点,从早7点到晚11点,去查一次客流数据,整理到表格中,上交给素未蒙面的上线,由他呈交领导查阅. 人的精力毕竟是有限的,所以 ...
- C++ 程序编译过程:从代码到程序
在大学课堂上学习 C++ 时,老师并没有过多涉猎 C++ 语法背后的知识.也就是说,初学 C++ 时,哪怕写出了代码,我也并不知道从代码到程序的过程中究竟发生了什么.我也曾尝试了解,但作为初学者,面对 ...
- 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...
- 用Python实现一个CPU跑分程序
一般我们要对cpu进行跑分测试,在不同的系统有时测试软件不能统一,比如Linux下就没有CineBench,导致跑分成绩对比不方便,所以想着自己写一个简单的跑分程序. 代码用Python实现,可以分别 ...
- 程序编译、优化、调试大杂烩
程序编译.优化.调试大杂烩 文章目录 程序编译.优化.调试大杂烩 1 编译.链接.汇编.调试 1.1 议题 1.2 CPU cache 1.2.1 为什么要有CPU Cache 1.2.2 为什么要有 ...
最新文章
- PCB线宽与电流的关系
- ASP.NET创建文件并写入内容
- C Primer+Plus(十七)高级数据表示 编程练习(二)
- Java集合之HashSet源码分析
- gtest测试框架使用详解_python selenium自动化测试框架如何搭建使用?
- Linux文件类型及颜色标识整理
- Hexo博客NexT主题美化之新增看板娘(能说话、能换装)
- MySQL 5.6 主从报错一例
- 管理感悟:每次争吵后要有进步
- 【Java】俄罗斯方块Java版
- Photoshop cc2019 破解教程
- Metro风格的CSS框架 BootMetro
- 我如何选PHP开发工具(PHP IDE)
- html table自动序号,layui 给数据表格加序号的方法
- Fresco判断是否缓存
- 如何关闭任务栏中chrome浏览器的通知图标
- css 多行文字左对齐,纯CSS实现文字一行居中,多行左对齐的方法
- Dataframe中na.fill的用法
- OOA/OOD/OOP细讲
- 零基础python入门书籍推荐书目_清华大学出版社-图书详情-《Python数据科学零基础一本通》...
热门文章
- 氩弧焊机的电气图_瑞凌TIG200A氩弧焊完整图(MOS管)分析
- Raft 论文精读笔记|In Search of an Understandable Consensus Alg orithm (Extended Version)
- opengl 读取obj模型
- Originpro绘制y轴偏移堆积图无法设置偏移量
- 玩吧斗兽棋的一些攻略 同级子谁胜负问题
- Gluster集群搭建
- (二)Gluster 架构部分(节-1)
- 软件工程基于场景建模 习题
- Linux进阶 | 2万字总结最详细的Docker的安装、底层隔离机制和简单使用!建议收藏,持续更新❤
- 114个ChatGPT全网最热话题