C语言编译预处理和动态存储分配
引导语:你知道编译预处理和动态存储分配是什么意思吗?以下是本站小编分享给大家的C语言编译预处理和动态存储分配,欢迎大家阅读学习!
1.1宏定义(不带参数的宏定义,带参数的宏定义)
1.编译预处理就是对C源程序进行编译前,由″编译预处理程序″对预处理命令行进行处理的过程。
2.C语言中,凡是以″#″开头的行,都称为″编译预处理″命令行。C语言中的编译预处命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。这些预处理命令组成的预处理命令行必须在一行的开头以″#″号开始,每行的未尾不得加″;″号,以区别于C语句、定义和说明语句。
3.不带参数的宏定义:命令的一般形式为:
#define标识符字符串
定义中的″标识符″为用户定义的标识符,称为宏名。在预编译时,C预编译程序将出现的宏名替换成″字符串″的内容,这一过程也称为宏展开。
4.带参数的宏定义:命令的一般形式为
#define宏名(形式参数)字符串
定义中的″字符串″应包含括号中所指定的形式参数。注意宏名与括号之间不要加空格,否则就成为不带参数的宏定义了。
5.预编译时,遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换,原则是:遇到实参则以实参代替,非形参字符原样保留,从而成展开后的内容。
1.2“文件包含”处理
1.文件包含的一般形式为:
#include″头文件名″
#include<头文件名>
头文件名一般由C语言提供,也可以是用户自己编写的,头文件通常用.h作为后缀。
2.当头文件名用双引号括起来时,系统首先在使用此命令的文件所在的目录中查找被包含的`文件,找不到时,再按系统指定的标准方式检索其它目录;当头文件名用尖括号括起来时,则直接按系统指定的标准检索方式查找被包含的文件。
3.预编译时,将被包含文件的内容全部复制到包含文件中,这就是文件″包含处理″。
1.3条件编译
C语言中的条件编译命令可对源程序代码的各部分有选择地进行编译。条件编译主要有如下3种使用格式:
使用格式1:
#ifdef标识符
程序段1
#else
程序段2
#endif
使用格式2:
#ifndef标识符
程序段1
#else
程序段2
#endif
使用格式3:
#if表达式
程序段1
#else
程序段2
#endif
使用格式1表示如果已定义了“标识符”,则编译“程序段1”,否则编译“程序段2”;使用格式2表示如没有定义了“标识符”,则编译“程序段1”,否则编译“程序段2”;使用格式3表示如“表达式”的值为“真”时,则编译“程序段1”,否则编译“程序段2”。
-
2017计算机二级C语言精选练习题及答案
很多时候计算机等级证书是我们找工作的敲门砖,因此,计算机等级证书也是有一定的含金量的。以下是小编为大家整理的2017计算机二级C语言精选练习题及答案,希望对大家有帮助!(1)在不同网络结点的对等层之间的通信需要下列哪一项协议?A)模块接口B)对等层协议C)电信号...
-
浅谈高职C语言课程的教学分析与设计
C语言作为学院网络技术专业的人门课程,旨在通过锻炼学生的逻辑思维,墙养学生在职业岗位中实际应用的能力.目前,该专业的学生毕业后主要从事网站开发和网络管理等方面的工作,而在这些领域几乎都以C语言作为应用的开发工具.但从历年教学实践来看,教师往往付出的精力多...
-
C/C++变量在内存中的分布介绍
变量在内存地址的分布为:堆-栈-代码区-全局静态-常量数据。同一区域的各变量按声明的顺序在内存的中依次由低到高分配空间(只有未赋值的全局变量是个例外)。本文是本站小编搜索整理的关于C/C++变量在内存中的分布介绍,感兴趣的朋友一起学习吧!!想了解更多相关信息...
-
2017计算机二级C语言精选习题
多做题有助于同学们及时检测自己的学习情况。希望提供的2017计算机二级C语言精选习题,能够帮助大家巩固所学知识,为今后的学习打好基础!(1)OSI模型的'物理层负责下列哪一种功能?A)格式化报文B)为数据选择通过网络的路由C)定义连接到介质的特征D)提供远程文件访...