如何定制Eclipse CDT代码模板

7

我正在为一个项目编写代码,需要符合一些样式指南。然而,CDT附带的标准模板与这种样式不匹配。特别是头文件保护的布局不应该是这样的。我查看了模板,对于我的Eclipse来说,它是这样的:

${filecomment}

#ifndef ${include_guard_symbol}
#define ${include_guard_symbol}

${typecomment}
${declarations}

#endif /* ${include_guard_symbol} */

我猜测变量${include_guard_symbol}在CDT中被设置了,但是是否有可能在不修改CDT本身的情况下更改此设置呢?

稍微有点不同,但相关的问题: 是否可能添加自己的模板,以便在项目的正常新建对话框中添加其他类型(测试用例、专业类等)的新文件?


2个回答

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中定义了一个嵌套类,我可能希望将该命名空间作为包含保护的一部分。目前在eclipse中我找不到这样的方法。


这与我想到的想法类似。我想我会看看是否已经有CDT的功能请求,如果没有,我会打开一个。 - LiKao
1
同时,如果project_name变量中没有空格,也可以使用它。(译者注:此处缺少上下文,无法确定type_name的翻译) #ifndef COMPANY_${project_name}_${type_name}H - Konrad Nowicki

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} */

3
使用此解决方案存在嵌套命名空间的问题。 #ifndef project::example::utils_SOMETHING_H_ - Konrad Nowicki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接