当前位置:网站首页>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边栏推荐
猜你喜欢

19. Up and down sampling and batchnorm

制作视频特效必备工具:NUKE 13
![[MVC Architecture] MVC model](/img/71/e10da490d5f0098c64b33e77d158e7.png)
[MVC Architecture] MVC model

5. Indexing and slicing

Chrome 如何快速将一组正在浏览的网页(tabs)转移到另一台设备(电脑)上

数字图像处理 第二章 数字图像基础

What tools are needed to make video post effects?

【Unity URP】代码获取当前URP配置UniversalRendererData,并动态添加RendererFeature

11. Gradient derivation of perceptron

18. Convolutional neural network
随机推荐
10. Gradient, activation function and loss
Gbase 8C - SQL reference 6 SQL syntax (14)
文件的路径
关于pytorch转onnx经常出现的问题
服务器相关的指标解释
数字图像处理 第二章 数字图像基础
socket编程一:使用fork()实现最基础的并发模式
6. Dimension transformation and broadcasting
Lightroom Classic 2022 v11.4中文版「最新资源」
Super remote connection management tool: Royal TSX
Greedy high performance neural network and AI chip application research and training
方差与协方差
能替代ps的修图软件?
DSGAN退化网络
Gbase 8C - SQL reference 5 full text search
【头歌】重生之我在py入门实训中(8): 模块
pytorch转onnx相关问题
向量和矩阵的范数
2. Simple regression problem
Digital image processing Chapter 4 - frequency domain filtering