我需要为一个项目编写的代码来匹配某些样式指南。但是,CDT附带的标准模板与此样式不匹配。特别是头部防护装置的布局不是应该的方式。我查看了模板,对于我的Eclipse,它看起来像这样:
${filecomment}
#ifndef ${include_guard_symbol}
#define ${include_guard_symbol}
${typecomment}
${declarations}
#endif /* ${include_guard_symbol} */
所以我猜测变量${include_guard_symbol}
是在CDT的某个地方设置的,但是可以更改此设置而无需修改CDT本身吗?
略有不同但相关的说明: 是否可以添加自己的模板,因此您可以使用项目的常规新对话框添加其他类型的新文件(测试用例,专用类等)?
答案 0 :(得分:6)
我们的项目也遇到了类似的问题。一种解决方案是将$ {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
不幸的是,似乎还没有一种方法可以自定义。例如,如果我定义了嵌套在namespace
中的类,我可能希望将命名空间作为include guard的一部分。我目前在eclipse中找不到办法做到这一点。
答案 1 :(得分:6)
所以在C / C ++下的首选项对话框中 - >代码风格 - >代码模板您可以将模板修改为更接近您需要的模板,例如,如果您需要保护中的命名空间,您可以执行类似的操作。
${filecomment}
#ifndef ${namespace_name}_${include_guard_symbol}
#define ${namespace_name}_${include_guard_symbol}
${includes}
${namespace_begin}
${declarations}
${namespace_end}
#endif /* ${namespace_name}_${include_guard_symbol} */