如何制作企业网站,上海建设人才网官网,前端微信小程序开发,成品网站源码免费预处理命令基本概念#xff1a;ANSI C标准规定可以在C源程序中加入一些“预处理命令”#xff0c;以改进程序设计环境#xff0c;提高编程效率。这些预处理命令是由ANSI C同一规定的#xff0c;但是它们不是C语言本身的组成部分#xff0c;不能直接对它们进行编译(因为编译…预处理命令基本概念ANSI C标准规定可以在C源程序中加入一些“预处理命令”以改进程序设计环境提高编程效率。这些预处理命令是由ANSI C同一规定的但是它们不是C语言本身的组成部分不能直接对它们进行编译(因为编译程序不能识别它们)。必须在对程序进行通常的编译之前先对程序中这些特殊的命令进行“预编译”经过预处理后的程序可由编译程序对预处理后的源程序进行通常的编译处理得到可供执行的目标代码。C语言与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。C提供的预处理功能主要有以下三种1、宏定义2、文件包含3、条件编译这些功能分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语言相区别这些命令以符号“#”开头。例如#define #include1、宏定义不带参数的宏定义宏定义一般形式#define 标识符 字符串#define PI 3.1415926宏定义的作用时在本程序文件中使用指定的标识符PI来代替“3.1415926”这个字符串在编译预处理时将程序中在该命令以后出现的所有PI都用“3.1415926”代替。这种方法使用户能以一个简单的名字代替一个长的字符串。这个标识符(名字)称为“宏名”在预编译时将宏名替换成字符串的过程称为宏展开。#define是宏定义命令说明(1)宏名一般习惯用大写字母表示以便与变量名相区别。但这并非规定也可用小写字母(2)使用宏名代替一个字符串可以减少程序中重复书写某些字符串的工作量(3)宏定义时用宏名代替一个字符串只做简单置换不做正确性检查只有在编译已被宏展开后的源程序时才会被发现语法错误并报错。(4)宏定义不是C语句不必在行末加分号。如果加了分号则会连分号一起进行置换(5)#define命令出现在程序中函数的外面宏名的有效范围为定义命令之后到本源文件结束。通常#define命令写在文件开头函数之前作为文件一部分在此文件范围内有效。(6)可以用#undef命令终止宏定义的作用域(7)在进行宏定义时可以引用已定义的宏名可以层层置换例如1 #include2 #define R 3.03 #define PI 3.14159264 #define L 2*PI*R5 #define S PI*R*R6 voidmain()7 {8 printf(L %f \n S %f,L,S);9 }带参数的宏定义作用不是进行简单的字符串替换还要进行参数替换带参数的宏定义一般形式为#define 宏名(参数表) 字符串字符串中包含在括弧中所指定的参数如#define S(a,b) a*b2、文件包含处理功能一个源文件可以将另一个源文件的内容全部包含进来一般形式#include “文件名” // 先在当前目录搜索在搜索标准目录#include //直接按标准目录搜索处理过程预编译时用被包含文件的内容取代该预处理命令再将“包含”后的文件作为一个源文件单位进行编译得到目标文件.obj被包含文件的内容源文件(*.c)头文件(*.h)//宏定义数据结构定义函数说明等文件包含可嵌套预编译后成为一个文件因此file2.c中的全局静态变量在file1.c中有效不必在用extern声明3、条件编译概念所谓“条件编译”时对部分内容指定编译的条件使其只在满足一定条件才进行编译条件编译命令的几种形式(1)#ifdef 标识符 (2)#ifndef 标识符 (3)#if 表达式程序段1 程序段1 程序段1#else #esle #else程序段2 程序段2 程序段2#endif #endif #endif