标签:strong 形参 文件 文件中 定义 查找文件 分享图片 函数调用 结构
C语言的预处理:在编译之前进行的处理,不进行编译。
C语言的预处理功能有:
预处理命令以符号“#”开头。、
宏定义又称为宏代换、宏替换,简称“宏”。
格式:
#define 标识符 文本
其中的标识符就是符号常量,也称为“宏名”。
预处理(预编译)工作也称为宏展开:将宏名替换为文本(这个文本可以是字符串、可以是代码等)。
例:
#define PI 3.1415926
把程序中全部的标识符PI换成3.1415926
说明:
(1)宏名一般用大写。
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义。
(3)可以用#undef命令终止宏定义的作用域。
(4)宏定义可以嵌套。
常规带参数的宏
除了一般的字符串替换,还要做参数代换。
格式:
#define 宏名(参数表) 文本
例如:
#define S(a,b) a*b
例如执行:area=S(3,2)。
第一步被换为area=a*b。
第二步被换为area=3*2。
类似于函数调用,有一个形参和实参结合的过程。
宏参数中表达式的问题
(1)实参如果是表达式容易出问题
#define S(r) r*r
例如执行:area=S(a+b)。
第一步换为:area=r*r。
第二步被换为area=a+b*a+b。
编程意图实际为:area=(a+b)*(a+b)。
因此:正确的宏定义是
#define S(r) ((r)*(r))
因此需要注意:
作用:一个文件包含另一个文件的内容。
格式:
#include "文件名"
或
#include <文件名>
文件包含注意:
头文件的内容除了函数原型和宏定义外,还可定义结构体、全局变量。头文件注意要点:
示例:
使用文件包含,不需要再本文件中使用extern声明被包含进来的全局变量和函数。
有些语句希望在条件满足时才编译。
格式一:
#ifdef 标识符 程序段1 #else 程序段2 #endif
或
#ifdef 程序段1 #endif
当标识符已经定义时,程序段1才参加编译。
格式二
#ifndef 标识符 #define 标识1 程序段1 #endif
如果标识符没有被定义,则重定义标识1,且执行程序段1。
格式三
#if 表达式1 程序段1 #elif 表达式2 程序段2 …… #elif 表达式n 程序段n #else 程序段n+1 #endif
当表达式1成立时,编译程序段1,当不成立时,编译程序段2。
使用条件编译优点:可以使目标程序变小,运行时间变短。
标签:strong 形参 文件 文件中 定义 查找文件 分享图片 函数调用 结构
原文地址:https://www.cnblogs.com/rask/p/10177906.html