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

Super remote connection management tool: Royal TSX

Digital image processing Chapter 5 - image restoration and reconstruction

5. Indexing and slicing

为什么交叉熵损失可以用于刻画损失

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

arcgis for js api(2) 获取要素服务的id集合

图像超分辨率评价指标

Lightroom Classic 2022 v11.4中文版「最新资源」

对于windows下的Redis,只能读不能写的问题

维度问题以及等高线
随机推荐
芯片、存储器及其关键指标简述 一
LaTeX中多个公式公用一个序号时
Weidongshan digital photo frame project learning (I) display ASCII characters on LCD
【11】二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
What has been updated in the Chinese version of XMIND mind map 2022 v12.0.3?
arcgis for js api(1) 获取featureLayer的所有字段名
Gbase 8C - SQL reference 6 SQL syntax (7)
Dpdk network protocol stack VPP OVS DDoS Sdn nfv virtualization high performance expert Road
8. Mathematical operation and attribute statistics
李宏毅 2020 深度学习与人类语言处理 DLHLP-Coreference Resolution-p21
古老的艺术-用好长尾关键词
数字图像处理——第六章 彩色图像处理
【头歌】重生之数据科学导论——回归进阶
【头歌】重生之我在py入门实训中(9):异常处理
9. High order operation
A photo breaks through the face recognition system: you can nod your head and open your mouth, netizens
cycleGAN解析
QGIS系列(1)-QGIS(server-apache) win10安装
15. GPU acceleration, Minist test practice and visdom visualization
【头歌】重生之我在py入门实训中(2):公式编程