C语言:程序环境和预处理

1. 程序的翻译环境和执行环境

翻译环境:在这个环境中源代码被转换为可执行的机器指令(二进制指令)
执行环境:它用于实现执行代码
在这里插入图片描述


集成开发环境

这里介绍一下我们用的VS到底是什么
在这里插入图片描述


2.编译与链接

以通讯录为例子
在这里插入图片描述
以一个小项目为例
在这里插入图片描述

2.1编译的几个阶段

因为VS2019集成开发环境不方便观察每个细节,所以后面是用liunx gcc来演示编辑和链接的
这里为了好举例我们只使用两个.c文件test.c和add.c
下面是整个详细的过程
在形成符号表的时候,函数会在链接文件中搜索指定的函数,然后将地址赋到对应的位置上,调用函数时就可以直接调用对应位置上的函数进行操作
在这里插入图片描述

2.2运行环境

程序执行的过程:

  1. 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。
  2. 程序的执行便开始。接着便调用main函数。
  3. 开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回
    地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。
  4. 终止程序。正常终止main函数;也有可能是意外终止。




3.预处理详解


3.1预定义符号

这些预定义符号都是语言内置的。 这些符号能反映出程序此时此刻的状态

符号 代表内容与功能
__FILE__ 进行编译的源文件
__LINE__ 文件当前的行号
__DATE__ 文件被编译的日期
__TIME__ 文件被编译的时间
__STDC__ 如果编译器遵循ANSI C,其值为1,否则未定义,VS2019不遵循,gcc遵循
__func__ 当前所使用的函数名

下面我们可以建立一个log.txt文件,作为日志文件,将运行的内容记录到日志文件中

#include<stdio.h>
int main()
{
   
	FILE* pf = fopen("log.txt", "w");
	if (pf == NULL)
	{
   
		return 1;
	}
	for
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中,预处理是指在编译阶段之前对源代码进行处理的过程,它由编译器的预处理器执行。预处理器会根据以符号#开头的预处理命令,对源代码进行一系列的处理和替换操作。预处理命令可以用来包含头文件、定义宏、条件编译等。 其中,预处理命令#include用于包含其他文件。被包含的文件可以是普通的C语言程序文件(.c文件),也可以是C语言程序的头文件(.h文件)。在C语言系统中,大量的定义与声明是以头文件形式提供的。通过#include命令,我们可以将头文件中的内容插入到当前源文件中,以便在程序中使用头文件中定义的函数、变量或宏等。 总结起来,预处理C语言中的用法主要包括使用#include命令来包含头文件,以及其他预处理命令用于定义宏、进行条件编译等操作。这些预处理命令能够扩展C语言程序设计的环境,提供了更灵活和高效的代码编写方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C语言中的预处理详解](https://blog.csdn.net/weixin_32445333/article/details/117124370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值