#define指令
示例:
#define PI 3.1415926
该指令(现在的C++版本用const代替#define) 指示预处理程序将PI的每一次出现用3.1415926来替换。
当预处理程序处理代码:
{double x=PI, y=1, z;
时,它会将下一行传送给编译程序:
{double x=3.1415926, y=1, z;
请注意预处理程序会删除注释,使得编译程序不会处理到注释
可以用#define指令来定义宏,也就是插入到源代码中的一系列计算,而不像上述例子那样的单一符号。从逻辑上来说,宏与函数在代码中的使用方式相同,都是一个单一的名字来代表一组操作。宏的运行速度比函数要快(但是占内容,因为它把代码指令在函数中重新展开了),在C中普遍使用。在C++中使用的是内联函数而不是宏。因此,尽管在几年前,程序员必须知道如何正确地编写宏,但是现在并不打算详细地介绍宏。宏容易导致错误。
其他重要的预处理程序指令控制条件计算。#ifdef指令只要该指令中所用的符号已经定义。它就可以将其后的代码包含其中。例如
#ifdef CPLUSPLUS
//如果定义了CPLUSPLUS则这里的一系列指令都会执行
#endif
注意:这里的CPLUSPLUS可以没有值
例如
#define CPLUSCPLUS和
#define CPLUSCPLUS 2
这两条语句对于#ifdef都为真,条件中的一系列指令都会执行。
同样请注意符号的名字要用大写。尽管这一点不是必需的,但这是程序设计中通常的习惯。另外一种普遍的用法是使用小写,但开头的两个字符必须是下划线。
下面的头文件
//point.h
#ifndef _POINT
#define _POINT
struct Point
{int x, y;};
#endif
//point.h文件结束
因为point.h中定义的结构体会被多个*.c文件包含。例如a.c, b.c 。当预处理程序在处理a.c时,它会找到point.h发现还没有定义_POINT.那么定义结构体。然后当预处理程序在处理b.c时,发现定义了_POINT则它不会面重复定义Point结构体。如果重复定义是会报错的,所以这里的预处理指令是必须的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架