哪些网站提供宁波网站建设推广任务,以佣金形式赚取收入?
摘要:宁波做网站建设推广,做任务赚佣金网站有哪些,专业返利网站建设,公司网站建设问题了解程序环境和预处理 前言:一、程序环境二、编译链接2.1 翻译环境2.2 编译的几个阶段2.3 运行环境 三、预处理3.1 预定义
宁波做网站建设推广,做任务赚佣金网站有哪些,专业返利网站建设,公司网站建设问题了解程序环境和预处理 前言#xff1a;一、程序环境二、编译链接2.1 翻译环境2.2 编译的几个阶段2.3 运行环境 三、预处理3.1 预定义符号3.2. #define的使用3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##的用途3.2.5 带副作用的宏参数3.2.6… 了解程序环境和预处理 前言一、程序环境二、编译链接2.1 翻译环境2.2 编译的几个阶段2.3 运行环境 三、预处理3.1 预定义符号3.2. #define的使用3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##的用途3.2.5 带副作用的宏参数3.2.6 宏和函数的对比3.2.7 命名约定 3.3 #undef 的作用3.4 命令行定义3.5 条件编译3.6 文件包含3.6.1 头文件被包含的方式3.6.2 嵌套文件包含 四、其他预处理指令 前言
先简单了解一下程序环境然后详细总结翻译环境里的编译和链接然后在总结编译预处理。
一、程序环境
在ANSI C的任何一种实现中存在两个不同的环境
翻译环境这个环境中源代码被转换为可执行的机器指令。执行环境执行二进制代码。
计算机如何执行二进制指令?
我们写的C语言代码是文本信息计算机不能直接理解。翻译环境 C语言代码——二进制代码。预编译、编译、汇编、链接执行环境执行二进制代码。
二、编译链接
2.1 翻译环境
程序编译链接过程:
组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。每个目标文件由链接器(linker)捆绑在一起形成一个单一而完整的可执行程序。链接器同时也会引入标准C函数库ANSI C中任何被该程序所用到的函数而且它可以搜索程序员个人的程序库将其需要的函数也链接到程序中。链接库 注意 VS2019开发环境集成了 编译器 cl.exe 链接器( link.exe )调试器
2.2 编译的几个阶段
创建两个源文件 sum.c
int sum(int num1,int num2)
{
return num1num2
}test.c
#include stdio.h
extern int sum(int,int);//声明外部函数
int main()
{
int nsum1,2;
printf(%d\n,n);
return 0
}VS2019这样的集成开发环境不方便观察编译细节这里我使用Linux系统gcc编译器观察这些细节。 编译分为两个阶段编译链接其中编译可细分为预编译编译汇编。隔离编译一起链接 为了查看编译期间的每一步发生了什么我们可以用命令去编译程序生成不同文件。 1.预处理 gcc -E test.c -o test.i 预处理完成后就停下来预处理之后产生的结果都放在test.i文件中。 2.编译 gcc -s test.c(gcc -s test.i) 编译完成后就停下来结果保存在test.s中。 3.汇编 gcc -c test.c(gcc -c test.s ) 汇编完成后就停下来结果保存在test.o中。 4.链接 gcc test.o -o test. 链接完成后就停下来生成test.exe可执行程序。 具体流程如图所示
2.3 运行环境
程序执行的过程: 1.程序必须载入内存中在有操作系统的环境中: 一般这个由操作系统完成。在独立的环境中程序的载入必须由手工安排也可以是通过可执行代码置入只读内存来完成。 2.程序的执行便开始。接着便调用main函数。 3开始执行程序代码。这个时候程序将使用一个运行时堆栈stack也叫函数栈帧存储函数的局部变量和返回地址。程序同时也可以使用静态(static) 内存存储于静态内存中的变量在程序的整个执行过程中一直保留他们的值。 4.终止程序。正常终止main函数也有可能是意外终止。
三、预处理
3.1 预定义符号
__FILE__ //进行编译的源文件
__LINE__ //文件当前的行号
__DATE__ //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循 ANSI C,其值为1否则未定义当前VS是不支持ANSI C(标准c)。这些预定义符号都是语言内置的。
