当CLion创建一个头文件时,它会添加包含这样的保护字符串:
#ifndef PROJECTNAME_FILENAME_H
#define PROJECTNAME_FILENAME_H
/* ... code ... */
#endif //PROJECTNAME_FILENAME_H
但我只想FILENAME_H
而没有PROJECTNAME_
前缀。如何在CLION设置中更改它?
答案 0 :(得分:7)
${INCLUDE_GUARD}
更改为_${NAME}_H_
例如,如果您的文件名为:clion.h
,那么_${NAME}_H_
将呈现为_clion_H_
,因为${NAME}
将呈现为文件名(不带扩展名)。< / p>
答案 1 :(得分:6)
这个问题迟到了,但我有一个稍微复杂一点的解决方案,无需文件扩展就可以处理这个问题而不需要手动后处理:
+
以创建新的包含模板。 名称类似于IncludeGuard
,并将扩展程序设置为h
。#macro( includeGuard $filename $ext )
#set( $ucfull = ${filename.toUpperCase().replace('-', '_')} )
#set( $extidx = ${ucfull.lastIndexOf(".")} )
#set( $extstart = $extidx + 1 )
#if( $extidx > -1 )
#set( $ucname = ${ucfull.substring(0,$extidx)} )
#set( $ucext = ${ucfull.substring($extstart)} )
#else
#set( $ucname = $!{ucfull} )
#set( $ucext = ${ext.toUpperCase()} )
#end
${ucname}_${ucext}##
#end##
C Header File
或C++ Class Header
文件,具体取决于您要更新的语言。#parse("IncludeGuard.h")##
#set( $blank = "" )
#[[#ifndef]]# #includeGuard(${NAME} "h")${blank}
#[[#define]]# #includeGuard(${NAME} "h")${blank}
// ...
#[[#endif]]# // #includeGuard(${NAME} "h")
如果一切正常,尝试使用名称test-include-guard
或test-include-guard.h
创建 C标题文件,都会产生以下结果:
#ifndef TEST_INCLUDE_GUARD_H
#define TEST_INCLUDE_GUARD_H
// ...
#endif /* TEST_INCLUDE_GUARD_H */
很少注意到:
includeGuard(${NAME} "h")
部分以使用您想要的第二个参数扩展名。该模板将尝试从${NAME}
解析文件扩展名,但如果您明确将其输入新文件名对话框,则${NAME}
仅包含文件扩展名。##
。#set( $blank = "" )
策略解决此问题。#parse()
时缓存包含模板的编译。如果您在此之后对包含模板进行了更改,则通常需要使用文件&gt; 在更改传播之前使高速缓存/重新启动菜单命令无效。答案 2 :(得分:1)
文件|设置|编辑|适用于Windows和Linux的文件和代码模板
CLION |偏好|编辑| OS X的文件和代码模板
#[[#ifndef]]# BASE_${HEADER_FILENAME}
#[[#define]]# BASE_${HEADER_FILENAME}
#[[#endif]]# //BASE_${HEADER_FILENAME}
&GT;
#ifndef BASE_test_h
#define BASE_test_h
#endif //BASE_test_h
选择 BASE_test_h 并按 CTRL + SHIFT + U 改为大写
答案 3 :(得分:0)
根据最新的doc(2019.3,但它也可能在较早的版本中工作),您可以导航至设置/首选项|下的命名约定标签。编辑器代码样式| C / C ++ 。
您将在其中找到一个字段,该字段可让您轻松更改页眉保护模式。无需再添加自定义模板。