C语言:第21天笔记
内容提要
- 预处理
- 库文件
- 文件I/O
- 标准I/O
预处理
预处理功能
条件编译
概念
**定义:**根据设定的条件选择待编译的语句代码。
预处理机制:将满足条件的语句进行保留,将不满足条件的语句进行删除,交个下一步编译。
语法:
-
语法1:
根据是否找到标记,来决定是否参与编译(标记存在为真,不存在为假)
#ifdef 标记 // 标记 一般使用宏定义 ... 语句代码1 #else ... 语句代码2 #endif举例:
#define DEBUG 1 #ifdef DEBUG printf("调试模式!\n"); // 保留 #else printf("产品模式!\n"); // 删除 #endif说明:
printf("调试模式!\n");和printf("调试模式!\n");只能保留一个。undef取消已定义的宏(使其变为未定义状态)。#define DEBUG 1 // 定义宏 #undef DEBUG // 取消定义的宏 #ifdef DEBUG printf("调试模式!\n"); // 删除 #else printf("产品模式!\n"); // 保留 #endif -
语法2:
根据是否找到标记,来决定是否参与编译(标记不存在为真,存在为假)
#ifndef 标记 ... 语句代码1 #else ... 语句代码2 #endif举例:
#define DEBUG 1 #ifndef DEBUG printf("调试模式!\n"); // 删除 #else printf("产品模式!\n"); // 保留 #endif -
语法3:
根据表达式的结果,来决定是否参与编译(表达式成立为真,不成立为假)
// 单分支 #if 表达式 ... 语句代码1 #endif // 双分支 #if 表达式 ... 语句代码1 #else ... 语句代码2 #endif // 多分支 #if 表达式1 ... 语句代码1 #elif 表达式n ... 语句代码n #else ... 语句代码n+1 #endif
案例
案例1
#include <stdio.h>
// 定义一个条件编译的标记
#define LETTER 1 // 默认是大写
int main(int argc, char *argv[])
{
// 测试用的字母字符串
char str[26] = "C Language";
char c;
int i = 0;
// 遍历获取每一个字符
while ((c = str[i]) != '\0')
{
#if LETTER
if (c >= 'a' && c <= 'z')
{
c -= 32; // 大写
}
#else
if (c >= 'A' && c <= 'Z')
{
c += 32; // 小写
}
#endif
printf("%c",c);
i++;
}
printf("\n"

最低0.47元/天 解锁文章
440

被折叠的 条评论
为什么被折叠?



