【发布时间】:2019-06-28 20:37:40
【问题描述】:
我有一个名为 calendarType.h 的头文件
添加合适吗
#ifndef calendarType
#define calendarType
和
#endif as the last row?
【问题讨论】:
标签: c++
我有一个名为 calendarType.h 的头文件
添加合适吗
#ifndef calendarType
#define calendarType
和
#endif as the last row?
【问题讨论】:
标签: c++
是的,这些将确保#ifdef 和#endif 之间的行在每次编译期间仅解析一次(即使它们从多个位置获得#include'd)
我唯一可能做的不同是将前两行中的calendarType 更改为calendarType_h——这将有助于确保#define'd 宏令牌不会干扰任何类或名为 calendarType 的结构体。
【讨论】:
#endif 之后没有任何内容
那些被称为包括警卫。它们应该在大多数头文件中使用,以避免称为双重包含的问题。双重包含很可能会导致编译失败。来自维基百科:
如果某些 C 或 C++ 语言结构被定义两次,则生成的翻译单元无效。
#pragma once 是传统包括警卫的替代品。虽然实际上不是 C++ 标准的一部分,但它在编译器中得到了很好的支持。 #pragma once 输入的代码更少,更不容易出错(例如,不小心重复使用相同的包含保护)。
【讨论】: