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

àì夳堔傛蜴生んèń 2023-09-29 09:22 19阅读 0赞

目录

1.程序的两种环境

2.编译+链接

2.1 翻译环境

2.2编译本身也分为几个阶段

2.3 运行环境

3.预处理

3.1 预处理指令

3.2 预定义符号


1.程序的两种环境

在C语言的标准实现中,存在两个不同的环境

1)翻译环境,源代码被转换为可执行的机器指令。

2)执行环境,用于实际执行的代码。


2.编译+链接

2.1 翻译环境

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5b-r5Yiw6ZSF6YeM5p2l5ZGA_size_20_color_FFFFFF_t_70_g_se_x_16

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5b-r5Yiw6ZSF6YeM5p2l5ZGA_size_20_color_FFFFFF_t_70_g_se_x_16 1

2.2编译本身也分为几个阶段

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5b-r5Yiw6ZSF6YeM5p2l5ZGA_size_20_color_FFFFFF_t_70_g_se_x_16 2

2.3 运行环境

程序的执行过程

1.程序载入内存中。

(如果有操作系统的环境中:一般有操作系统完成;如果在独立环境中,程序载入由手工操作,也有可能是通过可执行代码置入只读内存来完成)

2.程序如果执行就开始。

(开始后就调用main函数)

3.开始执行程序代码。

(执行后程序将使用一个运行时的堆栈,存储函数的局部变量和返回地址。

程序同时也可以使用静态内存,存储于静态内存中变量在内存的整个执行过程一直保留值)

4.结束程序。

(正常结束main函数;也可能意外终止)


3.预处理

3.1 预处理指令






















































指令 描述
#define 定义宏
#include 包含一个源代码文件
#undef 取消已定义的宏
#ifdef 如果宏已经定义,则返回真
#ifndef 如果宏没有定义,则返回真
#if 如果给定条件为真,则编译下面代码
#else

#if 的替代方案

#elif 如果前面的#if 给定条件为真,当前条件为真,则编译下面代码
#endif

结束一个#if ….#else 条件编译块

#error 当遇到标准错误时,输出错误信息
#pragma 使用标准化方法,向编译器发布特殊的命令到编译中

3.2 预定义符号






























描述
FILE 进行编译的源文件
LINE 文件当前的行号
DATE 文件被编译的日期
TIME 文件被编译的时间
STDC 如果编译器遵循ANSI C,其值为1,否则未定义

下面来打印观察一下他们的内容

  1. int main()
  2. {
  3. printf("%s\n",__FILE__);
  4. printf("%d\n", __LINE__);
  5. printf("%s\n", __DATE__);
  6. printf("%s\n", __TIME__);
  7. printf("%s\n", __FUNCTION__);
  8. return 0;
  9. }

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5b-r5Yiw6ZSF6YeM5p2l5ZGA_size_17_color_FFFFFF_t_70_g_se_x_16

发表评论

表情:
评论列表 (有 0 条评论,19人围观)

还没有评论,来说两句吧...

相关阅读