(C语言)程序环境和预处理

news2024/11/18 20:35:50

问:

1. 什么是C语言的源代码?

2. 由于计算机只认识什么?因此它只能接收与执行什么?也就是什么?

3. 在ANSI C的任何一种实现中,存在哪两个不同的环境?在这两种环境里面分别干什么事情?

4. 因此什么东西依赖翻译环境?翻译环境实际上就是把什么经过一系列处理变成什么?

5. 翻译环境中的操作在VS上的具体体现演示一下?

6. 后缀为.exe文件里面包含的就是什么?也叫什么?

7. 由于VS2019是什么?因此自然能提供什么与什么?

8. 画出两张翻译环境中运转的简图?并且笼统简述一下?

9. 在翻译环境下又可以分成哪两个过程?然后其中的什么又可以细分为什么,什么与什么?

10. 每个.c文件都会怎么样地先经过什么阶段?可以手动通过什么在该阶段完了之后生成什么?但系统不会怎么样?在该阶段主要干什么,什么与什么?其中什么有比如什么,什么等等?因此总结一下,都是些什么操作?如什么与什么?

11. 接下来进入什么阶段?gcc会默认自动生成什么?这一步实际上就是在干什么?有各种具体细节,其中什么需要特别介绍?所谓的什么就是指什么与什么?然后把它们怎么样?

12. 然后进入什么阶段?gcc会默认自动生成什么?即什么?当生成该文件时,文件里面已经是什么了?发现直接打开怎么样?需要怎么样?elf就是什么?会怎么样?所以汇编阶段就是干什么?其中有哪个步骤特别要注意?它就是把之前的什么在加上什么就形成了一个什么?

13. 什么完成之后就是什么了?该阶段有哪两个步骤?第一个具体是什么?第二个具体是什么?并且怎么样?这时候什么的作用体现出来了?在什么的时候就需要通过什么去查找,如果在该什么查不到对应的内容,就会怎么样?

14. 什么过后就进入了什么?什么必须载入到什么当中?这个一般由谁会完成?程序从什么开始执行?在这过程中会有什么的开辟,什么也称为什么?程序还可以把数据放在哪里?等等,最后程序会终止。

15. 尤其要对什么进行详解?该阶段主要处理什么,什么还有什么?但需要牢记,都仅仅是什么?如什么与什么?

16. 预定义符号是怎么样的?在预处理阶段就会被怎么样?预定义符号有哪5个?

17. #define 预处理指令有哪两个形式?但核心都可以用什么来概括?写的时候不要加什么?不要吝啬什么?

18. #define 预处理指令在什么过程中尤其要注意什么?同时在什么过程中,什么是不会怎么样的?

19. 什么是宏?#define 定义宏本质上是什么?宏不能出现什么?

20. Solve the problems: 写一个程序快速高效地比较两个数的大小?

21. 详细解释一下带副作用的宏参数的易犯错之处?并解释原因?

22. #pragma once 是用来干什么的?还可以怎么实现这个目的?


答:

1. 也就是我自己写的test.c文件里面的代码。

2. 二进制,二进制指令,可执行的机器指令。

3. 翻译环境,执行环境,翻译环境就是把我写的源码转化为计算机能够看懂的二进制指令(可执行的机器指令),执行环境里就是实际执行代码。

4. 源码转化为计算机能识别的机器指令,test.c,test.exe。

5. 自己实操一下。

6. 可执行的机器指令,二进制指令。

7. 集成开发环境,翻译环境,执行环境。

8.

9. 编译与链接,编译,预处理(预编译),编译,汇编。

10. 各自独立互不联系,预处理,gcc命令,×××.i文件,默认自己生成,处理预定义符号,处理预处理指令,删除注释,预处理指令,#include,#define定义的标识符与宏,文本,替换,删除。

11. 编译,×××.s,把C语言预处理后的代码翻译成汇编代码,符号汇总,符号,具有全局性质的变量名,函数名,汇总记录。

12. 汇编,×××.obj/o文件,目标文件,二进制指令,打不开的,借助工具readelf,目标文件的格式,将自己划分为一个一个段,把汇编语言转化为二进制机器指令,形成符号表,汇总的符号,相应的地址,符号表。

13. 编译,链接,合并段表与符号表的合并与重定位,合并段表就是把之前互相独立的obj文件里面各自的段整合在一起,符号表的合并与重定位就是把之前互相独立的编译过程产生的各自的符号表整合在一起,有之前生成的随机地址的话就用正确的地址替代掉,符号表,链接,符号表,地址处,报错。

14. 翻译环境,执行环境,程序,内存,操作系统,main函数,函数栈帧,函数栈帧,运行时堆栈,静态区。

15. 预处理阶段,预定义符号,预处理指令,删除注释,文本操作,替换,删除。

16. 语言内置的,替换掉,如图:

17. 定义标识符,定义宏,文本替换,分号,括号。

18. 文本替换,不能凭借数学直觉自己加括号,文本替换,字符串,被搜索进去的。

19. #define机制允许把参数替换到文本中,文本替换,递归。

20.

#define MAX(x,y) ((x)>(y)?(x):(y))

21. 不能按照函数的思维去思考,因为宏在源码的预处理阶段就已经被无脑文本替换掉了不会涉及到任何的运算。

22. 为了防止头文件被重复包含,

#ifndef __T1_H__
#define __T1_H__
int Add(int x, int y);
#endif

个人觉得了解一下:

  1. #define定义宏时的#与##符号?

  1. 宏与函数的对比?

  1. 命令行定义与条件编译?

  1. #undef是什么?

  1. #include <Elon.h>与 #include"Elon.h"的区别?


参考图片:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/338453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款非常不错的微信系统垃圾清理工具:微信清理大师,操作简单,清除较快。

微信清理大师 微信清理大师是一款专为微信所推出的系统垃圾清理工具。它的功能十分强大&#xff0c;可快捷清理微信内储存垃圾文件&#xff0c;操作十分简单&#xff0c;只需要轻轻一点&#xff0c;即可删除清理。 功能特点&#xff1a; 【一键清理】一键搞定无用垃圾&#x…

【计算机网络】Linux环境中的TCP网络编程

文章目录前言一、TCP Socket API1. socket2. bind3. listen4. accept5. connect二、封装TCPSocket三、服务端的实现1. 封装TCP通用服务器2. 封装任务对象3. 实现转换功能的服务器四、客户端的实现1. 封装TCP通用客户端2. 实现转换功能的客户端五、结果演示六、多进程版服务器七…

Kubernetes + Docker 部署一个yolov5检测服务(基于FastDeploy)

Kubernetes Docker 从零部署一个yolov5检测服务&#xff0c;服务基于PaddlePaddle/FastDeploy的服务化部署&#xff1b;所有软件从零安装。 文章目录1.说明2.环境3.安装过程 3.1安装 Docker 3.2安装 minikube 3.3安装 Kubectl4.部署过程 4.1 Docker相关 4.2 k8s相关 4.3 启动服…

开发必备技术--docker(使用篇)

文章目录前言Docker的基本概念概念数据卷虚拟网络镜像操作镜像名称镜像命令容器操作基本操作容器创建数据卷操作创建和查看数据卷其他指令实战前言 续接上一篇博文&#xff1a; 开发必备技术–docker&#xff08;一&#xff09; 这也是开学了&#xff0c;假期的最后一篇博文&a…

minio下载文件速度很慢的原因分析与说明

文章目录1.实战背景2.问题描述3.问题分析4.问题解决1.实战背景 最近在做一个项目&#xff0c;需要用到minio来搭建文件系统&#xff0c;先简单说一下我在项目中设置的上传文件流程&#xff1a; 前端将分块文件逐一传给后端&#xff0c;后端再存储到 linux服务器的minio 当中。…

JAVA集合专题3 —— vector + LinkedList + Set

目录vector的特点LinkedList底层结构模拟双向链表比较ArrayList和LinkedListSet接口基本介绍Set接口的遍历方式Set接口实现类对象的特点Set接口实现类HashSet模拟HashSet/HashMap的底层结构vector的特点 Vector底层是一个对象数组Vector是线程同步的&#xff0c;即线程安全的&…

保姆级 | ChatGPT接入微信教程

文章目录 0x00 前言 0x01 环境说明 0x02 准备工作 0x03 报错 Not available 解决方法 0x04 登录Open AI账号 0x05 获取账号API 0x06 配置阿里云开源项目 0x07 OpenAI接入微信 0x08 ChatGPT微信使用演示 0x09 参考文献 0x10 总结 0x00 前言 ChatGPT 美国 OpenAI 研发…

使用 Sahi 实现 Web 自动化测试

Sahi 是 Tyto Software 旗下的一个基于业务的开源 Web 应用自动化测试工具。Sahi 运行为一个代理服务器&#xff0c;并通过注入 JavaScript 来访问 Web 页面中的元素。Sahi 支持 HTTPS 并且独立于 Web 站点&#xff0c;简单小巧却功能强大。它相对于 Selenium 等自动化测试工具…

【408】操作系统 - 刻骨铭心自测题1(上)

文章目录OS练习题第一部分&#xff1a;1&#xff1a;2&#xff1a;3&#xff1a;4&#xff1a;5&#xff1a;6&#xff1a;7&#xff1a;8&#xff1a;9&#xff1a;10&#xff1a;11&#xff1a;12&#xff1a;13&#xff1a;14&#xff1a;15&#xff1a;16&#xff1a;17&am…

C++ 类与对象(下)

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;C类与对象的收尾工作&#…

Android10/11 原生Launcher3深度定制

一、引言关于Android10和11系统Launcher3的定制有很多&#xff0c;根据项目的需求会进行各种定制开发&#xff0c;于是就需要研究Launcher3的源码。本文主要从Android 11的Launcher3QuickStep着手&#xff08;go版本或者其他版本类似&#xff09;从常用的修改进行分析&#xff…

[论文阅读] DAE-GCN: Identifying Disease-Related Features for Disease Prediction

[论文地址] [代码] [MICCAI 21] Abstract 学习与疾病相关的表征在基于图像的癌症诊断中起着至关重要的作用&#xff0c;因为它具有可信、可解释和良好的概括能力。一个好的表征不仅应该与疾病无关的特征相分离&#xff0c;而且还应该包含病变的属性信息&#xff08;如形状、边…

【博客616】prometheus staleness对PromQL查询的影响

prometheus staleness对PromQL查询的影响 1、prometheus staleness 官方文档的解释&#xff1a; 概括&#xff1a; 运行查询时&#xff0c;将独立于实际的当前时间序列数据选择采样数据的时间戳。这主要是为了支持聚合&#xff08;sum、avg 等&#xff09;等情况&#xff0c…

【ChatGpt】——不一样的使用感受分享

作者&#xff1a;狮子也疯狂 专栏&#xff1a;《基础知识查漏》 坚持做好每一步&#xff0c;幸运之神自然会降临在你的身上 目录一. &#x1f981; 前言二. &#x1f981; 使用详情Ⅰ. &#x1f407; 使用过程Ⅱ. &#x1f407; 使用感受Ⅲ. &#x1f407; 遇到的问题3.1 我遇…

linux服务器挂载硬盘/磁盘

1. 查看机器所挂硬盘个数及分区情况&#xff1a;fdisk -l可以看出来目前/dev/vda 目前有300G可用.内部有两个分区&#xff08;/dev/vda1,/dev/vda2&#xff09;。2. 格式化磁盘格式化磁盘命令为【mkfs.磁盘类型格式 目录路径组成】查看磁盘文件格式&#xff1a;df -T格式化磁盘…

SharkTeam:Move合约开发与合约安全

近期&#xff0c;围绕 Aptos 和 Sui&#xff0c;新兴的高性能 L1链 以及这些新链背后的 Move 智能合约编程语言引起了很多关注&#xff0c;社区也非常活跃&#xff0c;很多开发者和项目已经开始积极转向 Move。但Move相对Solidity差别较大&#xff0c;即使是相对比较接近的Rust…

数据与C(字符串)

目录 一.概念引入 二.字符串&#xff08;数组存储&#xff0c;必须以\0结尾&#xff09; 三.错误示范 四.strlen&#xff08;&#xff09;和sizeof()相对于字符串的不同 一.概念引入 “a”,a哪个是字符哪个又是字符串&#xff0c;嘿嘿不用猜了 我们在上一章中说过&#x…

服务端开发Java面试复盘篇1

上周投了一些简历&#xff0c;约了8-9家面试&#xff0c;其中完成了3家的第一轮面试&#xff0c;由于面试的是Java 的实习生&#xff0c;感觉问的题目都比较基础&#xff0c;不过有些问题回答的不是很好&#xff0c;在这里对回答的不太好的题目做一下总结和复盘。 目录 一、后…

【数据库】 mysql用户授权详解

目录 MySQL用户授权 一&#xff0c;密码策略 1&#xff0c;查看临时密码 2&#xff0c;查看数据库当前密码策略&#xff1a; 二&#xff0c; 用户授权和撤销授权 1、创建用户 2&#xff0c;删除用户 3&#xff0c;授权和回收权限 MySQL用户授权 一&#xff0c;密码策略…

Https 协议超强讲解(一)

都说Https协议非常安全&#xff0c;那为什么还是会被抓包呢&#xff1f;抓包后会影响什么吗&#xff1f; HTTPS协议 随着 HTTPS 建站的成本下降&#xff0c;现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全&#xff0c;也听说过与 HTTPS 协议相关…