CLion教程-头文件保护

头文件保护是一种预处理器指令模式,用于保护头文件免受多次包含的影响。头文件保护将整个代码内容包裹在#ifndef
(#if !defined
或其他类似) 块中:
#ifndef MY_HEADER_H
#define MY_HEADER_H
//...
#endif
编辑头文件模板
默认情况下,头文件保护已包含在文件模板中,用于指定新头文件的初始内容。如果您决定使用#pragma once而不是头文件保护,则可以编辑这些模板。要进行此操作,请转到"Settings | Editor | File and Code Templates",然后打开"Files"选项卡。从列表中选择"C Header File"或"C++ Class Header",并更改模板内容:
注意使用#pragma once
包裹的字面语法。对于文件模板,CLion使用Apache Velocity语言,需要对C/C++预处理器指令进行转义,以便正确解析它们。
配置头文件保护符号
- 头文件保护符号(如上面示例中的
MY_HEADER_H
)应该是唯一的,因此通常与文件名相关。要配置头文件保护符号的模式,请在"Settings | Editor | Code Style | C/C++"中的"Naming Convention"选项卡中打开"Header Guard"字段,并在其中指定模板: 您可以使用各种预定义变量,例如:
${PROJECT_NAME}
- 当前项目的名称。${PROJECT_REL_PATH}
- 相对目标路径。例如,如果项目位于prj目录中,目标文件是prj/src/dir/header.h,那么${PROJECT_REL_PATH}
将等于src/dir。${FILE_NAME}
- 目标文件名(不带扩展名)。${EXT}
- 目标文件扩展名。- 在文件模板变量中可以找到的其他变量,例如
${USER}
或${DATE}
。
有效的头文件保护符号可以包含以下字符:大写字母 'A-Z'
和小写字母 'a-z'
,下划线_
,数字(但不能以数字开头),以及美元符号$
。请注意,CLion会在以数字开头的符号前添加INC_
前缀,并使用INC_${UUID}
模式替换无效的符号。
- 配置的符号会替换头文件模板中的
${INCLUDE_GUARD}
变量。当创建新的C/C++类和头文件时,CLion将应用此模式。另外,如果您重命名一个类或文件,与当前配置的样式匹配的头文件保护符号将被更新为新名称: