我有一个名为calendarType.h的头文件
添加
是否合适#ifndef calendarType
#define calendarType
和
#endif as the last row?
答案 0 :(得分:2)
是的,它们将确保在每次编译期间#ifdef
和#endif
之间的行仅被解析一次(即使它们从多个位置得到#include
)
我唯一可以做的不同的事情是在前两行中将calendarType
更改为calendarType_h
-这将有助于确保#define
的宏令牌不会不会干扰任何名为calendarType
的类或结构。
答案 1 :(得分:1)
这些被称为包括卫兵。在大多数头文件中都应使用它们,以避免出现称为双重包含的问题。双重包含很可能导致编译失败。来自维基百科:
如果两次定义了某些C或C ++语言构造,则结果转换单元无效。
#pragma once
是传统 include卫兵的替代。尽管实际上不是C ++标准的一部分,但跨编译器都很好地支持它。 #pragma once
键入的代码更少,更不容易出错(例如,意外地重用了相同的include防护)。