在Eclipse CDT中定义代码模板时,我们可以使用名为${include_guard_symbol}
的变量转换为MYFILE_H
。
我希望有更明确的内容:SRC_MYFOLDER_MYFILE_H
。
我按照an answer to Stack Overflow question Customizing include-guard for Eclipse CDT中给出的步骤操作,但我得到的只是${include_guard_symbol}
返回一个空字符串!我还在Stack Overflow上看到了关于adding the namespace to the include guard的其他相关问题,但这不是我想要的。
我使用的是Eclipse版本3.5.2和CDT版本6.0.2。
是否有另一种方法可以达到预期效果?
答案 0 :(得分:4)
我安装的最旧版本是3.7,我在那里和4.2上进行了测试,referenced link完全符合OP的要求。 (OP正在使用3.5.2)。对于今后来这里的人来说,这里是步骤
\.metadata\.plugins\org.eclipse.core.runtime\settings
org.eclipse.cdt.ui.prefs
的文件加载到文本编辑器codetemplates.includeGuardGenerationScheme=2
我在src文件夹下创建了一个名为MyFolder的文件夹。然后我右键单击并添加了一个新的头文件,结果是:
#ifndef SRC_MYFOLDER_TEST_H_
#define SRC_MYFOLDER_TEST_H_
#endif /* SRC_MYFOLDER_TEST_H_ */
答案 1 :(得分:0)
主要观点:How to customize eclipse CDT code templates
一种解决方案是将${include_guard_symbol}
全部放在模板中,自己定义,可能使用其他一些预定义变量。像这样:
${filecomment}
#ifndef MyProject_${file_base}_h
#define MyProject_${file_base}_h
${typecomment}
${declarations}
#endif /* MyProject_${file_base}_h */
因此,对于名为inc / Foo.h的头文件,include guard将按如下方式插入:
#ifndef MyProject_Foo_h
#define MyProject_Foo_h
不幸的是,似乎还没有一种方法可以自定义。例如,如果我定义了一个嵌套在命名空间中的类,我可能希望将命名空间作为include guard的一部分。我目前在eclipse中找不到办法做到这一点。
答案 2 :(得分:0)
不是你的问题的答案,但我想建议一个替代方案。包含保护提供了一种工作的,尽管粗略的方式来禁止每个编译单元不止一次包含头文件中的代码。作为替代方案,您可以使用
#pragma once
编译器指令。我意识到它没有在标准中定义,但它得到了许多编译器的支持,包括GNU,Clang,MSVC和Intel。如果你使用#pragma once
,你就会失去很小的可移植性,并且你避免了名字冲突,我认为这是你想要首先改变${include_guard_symbol}
的原因。
您也可以查看http://en.wikipedia.org/wiki/Pragma_once进行更全面的讨论。