当前位置:网站首页>C语言-程序的编译
C语言-程序的编译
2022-07-27 05:20:00 【秋名山车神ae】
C程序的翻译环境与执行环境。
翻译环境指的是将源文件转换成可执行的机器指令的环境,执行环境用于实际执行代码。
在翻译环境中,每一个源文件通过编译被转换为目标代码(obj),目标文件通过链接器捆绑在一起
,形成一个单一的可执行程序,链接器同时也将函数库中的函数链接到程序中。
编译分为 预编译(预处理),编译,汇编三个阶段。
在预编译阶段,把包含的头文件代码放入源文件中,进行define定义的符号的替换,以及注释的删除。
在编译阶段,通过语法分析,语义分析,词法分析,符号汇总把C语言代码翻译为汇编语言代码。
在汇编阶段,把汇编语言代码翻译为机器语言。
预处理指令
//这些预定义符号都是语言内置的。
__FILE__ //进行编译的源文件
__LINE__ //文件当前的行号
__DATE__ //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义#define
使用define定义表示符
#define name stuff#define定义标识符时,最好不要加;
使用#define允许把参数替换到文本中,这种定义被称为宏定义。
例如
#define SQUARE( x ) x * x但是用于对数值表达式进行求值的宏定义都应该加上适当的括号,避免在使用宏时由于参数中的操
作符或邻近操作符之间不可预料的相互作用。
#define的替换规则
1. 在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首
先被替换。
条件编译
1.
#if 常量表达式
//
#endif
//常量表达式由预处理器求值。
如:
#define __DEBUG__ 1
#if __DEBUG__
//..
#endif
2.多个分支的条件编译
#if 常量表达式
//...
#elif 常量表达式
//...
#else
//...
#endif
3.判断是否被定义
#if defined(symbol)
#ifdef symbol
#if !defined(symbol)
#ifndef symbol
4.嵌套指令
#if defined(OS_UNIX)
#ifdef OPTION1
unix_version_option1();
#endif
#ifdef OPTION2
unix_version_option2();
#endif
#elif defined(OS_MSDOS)
#ifdef OPTION2
msdos_version_option2();
#endif
#endif头文件的包含
本地文件包含:
#include "filename"#include <filename.h>#ifndef __TEST_H__
#define __TEST_H__
//头文件的内容
#endif //__TEST_H__或者
#pragma once边栏推荐
猜你喜欢
![[MVC Architecture] MVC model](/img/71/e10da490d5f0098c64b33e77d158e7.png)
[MVC Architecture] MVC model

Redis在windows下的idea连接不上问题

19. Up and down sampling and batchnorm

物联网操作系统多任务基础

西瓜书学习笔记---第四章 决策树

Xmind 思维导图 2022 v12.0.3中文版更新了哪些内容?

西瓜书学习第五章---神经网络

Speech and Language Processing (3rd ed. draft) Chapter 2 ——正则表达式,文本归一化,编辑距离 阅读笔记

视觉横向课题bug1:FileNotFoundError: Could not find module ‘MvCameraControl.dll‘ (or one of it

安全帽反光衣检测识别数据集和yolov5模型
随机推荐
使用Markdowm
【头歌】重生之我在py入门实训中(9):异常处理
Day 2. Depressive symptoms, post-traumatic stress symptoms and suicide risk among graduate students
模型的推理速度
【头歌】重生之机器学习-线性回归
安全帽反光衣检测识别数据集和yolov5模型
Auto Encoder(AE),Denoising Auto Encoder(DAE), Variational Auto Encoder(VAE) 区别
判断是否为回文结构的三种方法
【头歌】重生之我在py入门实训中(4):循环程序
18. Convolutional neural network
PS 2022 updated in June, what new functions have been added
AE 3D particle system plug-in: Trapcode particle
Lightroom Classic 2022 v11.4中文版「最新资源」
STM32 infrared remote control
operator() 用法之一
Digital image processing Chapter 4 - frequency domain filtering
4. Tensor data type and creation tensor
13. Logistic regression
Xmind 思维导图 2022 v12.0.3中文版更新了哪些内容?
Gbase 8C - SQL reference 6 SQL syntax (11)