1
3
您是对的,代码的行为没有变化。 没有 显然的 从你展示的代码中获益。 这是因为
定义
什么 能够 原因是如果有其他工具在预处理器之前读取代码并标记某种用法。
注意:在注释中,您引用了其他代码。那个代码
可以
,根据其他标志,将宏设置为
某物
,如
|
2
1
根据您的评论,请参阅:
在哪里?
这些宏用于启用与系统/编译/环境相关的选项。
万一
也可以用于其他预处理或后处理脚本,作为标记,以更容易找到定义。(例如,创建API文档,创建将API粘附到脚本语言的方法,…)
在其他情况下,它仅在编译器支持时才用于启用语言功能(如
|
3
0
这种代码唯一可见的好处是确保
宏用于防护,而不是其他用途,即使是意外
.
现代编译器会对宏的重新定义发出警告。
尽管如此,这样的保护不会造成任何伤害,并提供了一点好处,以避免任何意外的重新定义。
因此,可能不需要这种额外的检查,因为任何开发人员都不会像宏那样创建文件。 |
4
0
宏的一个目的是由预处理程序将其替换为其他内容(无论宏定义为什么)。 具体来说,在类键和类名之间放置宏(例如在示例中),将允许宏控制类的属性序列。例如,如果将宏定义为空(例如在示例中),则类将具有空的属性序列:
但宏可以定义为非空:
宏可以在编译时作为参数传递给工具链,从而打开或关闭功能。宏还可以用于检测目标系统,从而启用特定于系统的代码,从而允许依赖系统的程序在多个系统上工作。 宏的另一个目的是防止头被包含两次。这种宏称为头保护。对头部保护和内容替换(例如在您的示例中)使用相同的宏是令人困惑的和非常规的。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |