免费网站是如何盈利的,最近的电脑培训班在哪里,盘龙网站建设,网站做任务给钱的归纳编程学习的感悟#xff0c; 记录奋斗路上的点滴#xff0c; 希望能帮到一样刻苦的你#xff01; 如有不足欢迎指正#xff01; 共同学习交流#xff01; #x1f30e;欢迎各位→点赞 #x1f44d; 收藏⭐ 留言#x1f4dd; 耕耘者的汗水是哺育种子成长的乳汁 记录奋斗路上的点滴 希望能帮到一样刻苦的你 如有不足欢迎指正 共同学习交流 欢迎各位→点赞 收藏⭐ 留言 耕耘者的汗水是哺育种子成长的乳汁
一起加油 目录
一、前言
二、C常见的预处理命令
1.宏定义命令
例简单宏定义应用:已知半径编程求圆的周长、面积和球的体积。
说明
例带参数的宏定义。 2.文件包含命令 3.条件编译命令
例条件编译命令示例。
三、使用条件编译指令防止头文件被重复引用
四、共勉 一、前言 C从C语言那里继承了编译预处理。编译预处理的作用是对程序文本进行扫描对其进行初步转换产生新的源代码并提交给编译器。所有预处理指令在程序中都是以“#”来引导的一条预处理指令单独占用一行结束的位置没有分号。预处理指令可以根据需要出现在程序中的任何位置。 二、C常见的预处理命令
1.宏定义命令 这种命令一般用在 C 语言中在 C中很少使用宏定义命令分为简单宏定义命令和带参数宏定义命令。 简单宏定义命令用来将一个标识符定义为一个字符串。在预处理时将程序中出现的宏名用被定义的字符串替换称为宏替换替换后再进行编译。
例简单宏定义应用:已知半径编程求圆的周长、面积和球的体积。
#includeiostream
using namespace std;
const double PI3.14159//定义的常量为double型
int main(){double r,l,s,v;coutInput radius:;cinr;l2*PI*r;sPI*r*r;v4.0/3.0*PI*r*r*r;cout周长 llendl面积 ssendl体积 vvendl;return 0;
} 说明 程序中所有的 PI 都被宏定义的字符串替换掉。这种简单的替换一般在C语言中使用用来定义符号常量。而在 C中使用常类型 const 来定义常量const 可以定义不同类型的常量。 带参数的宏定义命令是指在宏名后面跟着参数表在替换时仅替换宏定义中与参数表相同的标识符。带参数的宏定义中出现的参数被称为形参在程序中用宏定义时出现的参数则被称为实参。
例带参数的宏定义。
#includeiostream
using namespace std;
#define MUL(x,y) (x)*(y)
int main(){int x,y;cinxy;coutMUL(x,y)endl;return 0;
} 2.文件包含命令 文件包含命令用来将另一个源文件嵌入到当前文件中的某个位置以备将来需要时使用。C
中常用的有#include iostream(提供有关输入/输出的功能)和#include cmath (提供许多数学计算的函数)文件包含命令一般放在程序的开头有如下两种格式。 (1)#include 文件名 按标准方式搜索文件位于系统目录的 include 子目录下 (2)#include 文件名 首先在当前目录中搜索若没有再按标准方式搜索#include 指令可以嵌套使用。假设有一个头文件 myhead.h该头文件中可以有如下的文件包含命令:
#includefile1.h #includefile2.h 3.条件编译命令 使用条件编译指令可以限定程序中的某些内容只有在满足一定条件的情况下才参与编译 (1)格式1
#ifdef标识符 程序段 1 #else 程序段 2 #endif
当标识符被宏定义时程序段 1参与编译否则程序段 2 参与编译
(2)格式2
#ifndef标识符 程序段 1 #else 程序段 2 #endif 当标识符未被宏定义时程序段 1参与编译;否则程序段 2参与编译
(3)格式3#if常量表达式 程序段 1 #else 程序段 2 #endif 当常量表达式的值非 0时程序段 1 参与编译;否则程序段2参与编译
例条件编译命令示例。
#ifndef T#define T 1
#endif
#if T1char s[]good morning!;
#endif
#includeiostream
using namespace std;
int main(){couthello!sendl;return 0;
} 三、使用条件编译指令防止头文件被重复引用 由于文件包含指令可以嵌套使用所以在设计程序时要避免多次重复包含同一个头文件否则会引起变量及类的重复定义。例如某个工程包含如下四个源文件。
//main.cpp
#includefile1.h
#includefile2.hint main(){……
}//file1.h
#includehead.h……//file.h
#includehead.h……//head.h……
class Point{……
};…… 此时由于#include 指令的嵌套使用头文件 head.h 被包含了两次于是编译时系统会指出错误:类 Point 被重复定义。那么如何避免这种情况呢?这就要在可能被重复包含的头文件中使用条件编译指令。用一个唯一的标识符来标记某文件是否已参加过编译如果已参加过编译,则说明该程序段是被重复包含的编译时忽略重复部分。将文件 head.h 改写为:
//head.h
#ifdef_HEAD_H
#define HEAD_H
……
class Point{……
}; ……#endif
四、共勉 以上就是我对C共享和保护——(5)编译预处理命令的理解希望本篇文章对你有所帮助也希望可以支持支持博主后续博主也会定期更新学习记录记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴请在评论区说出来哦同时我还会继续更新对C共享和保护的理解请持续关注我哦