C语言基础六——预处理
预处理
编译前,编译器自动对#开头的代码进行的处理
1.常用预定义符号及用法(预定义符的开头和结尾都是两个下划线)
printf("%s",__FILE__);//输出当前文件名
printf("%s",__FUNCTION__);//输出当前所在函数
printf("%s",__DATE__);//当前编译日期
printf("%s",__TIME__);//当前编译时间
printf("%d",__LINE__);//当前行数
2.宏定义 自定义一个标识符用于表示某一数据或表达式
#define 宏名 宏替换
#define A 35;//定义用A代替35;
int ()main
{
int a = A;
printf("%d\n", a);//输出结果为35
return 0;
}
3.文件包含 (相当于把要包含的文件整体复制粘贴到当前文件,因此重复包含同一文件会导致重复定义)
#include<stdio.h> //包含文件stdio.h,<>表示在系统头文件中查找,
#include"stdio.h" //一般格式
#pragma once //防止重复包含头文件(VS特有)
4.条件编译(被注释的代码会被编译但被条件编译跳过的代码段不会被编译用于节省编译条件)
(1)
#if(条件)
代码段1;
#else // 另有#elif用法类比else if
代码段2;
#endif //条件为真编译代码段1否则编译代码段2
(2)
#ifdef 宏名
代码段;
#endif //如果定义了宏“宏名”则编译代码段
(3)
#ifndef 宏名
代码段;
#endif //如果没有定义了宏“宏名”则编译代码段
(4)
#ifdef 宏名
代码段1;
#else
代码段2;
#endif //如果定义了宏“宏名”编译代码段1,否则编译代码段2
(5)
#ifndef 宏名
代码段1;
#else
代码段2;
#endif //如果没有定义宏“宏名”编译代码段1,否则编译代码段2
预处理编译前,编译器自动对#开头的代码进行的处理1.常用预定义符号及用法(预定义符的开头和结尾都是两个下划线)printf("%s",__FILE__);//输出当前文件名printf("%s",__FUNCTION__);//输出当前所在函数printf("%s",__DATE__);//当前编译日期printf("%s",__TIME__);//当前编译时间printf("%d",__LINE__);//当前行数2.宏定义 自定义一个标识符用于表示某一数据或表达式#define 宏名 宏替换3.文件包含 (相当于把要包含的文件整体复制粘贴到当前文件,因此重复包含同一文件会导致重复定义)#include<stdio.h> //包含文件stdio.h,<>表示在系统头文件中查找,#include"stdio.h" //一般格式#pragma once //防止重复包含头文件(VS特有)4.条件编译(被注释的代码会被编译但被条件编译跳过的代码段不会被编译用于节省编译条件)(1) #if(条件)代码段1;#else // 另有#elif用法类比else if代码段2;#endif //条件为真编译代码段1否则编译代码段2(2)#ifdef 宏名代码段;#endif //如果定义了宏“宏名”则编译代码段(3)#ifndef 宏名代码段;#endif //如果没有定义了宏“宏名”则编译代码段(4)#ifdef 宏名代码段1;#else代码段2;#endif //如果定义了宏“宏名”编译代码段1,否则编译代码段2(5)#ifndef 宏名代码段1;#else代码段2;#endif //如果没有定义宏“宏名”编译代码段1,否则编译代码段2

浙公网安备 33010602011771号