【问题标题】:Customizing include-guard for Eclipse CDT为 Eclipse CDT 定制 include-guard
【发布时间】:2011-10-14 06:57:28
【问题描述】:

我希望通过使用 Eclipse/CDT 创建一个新的 C++ 类来自动生成包含保护,但我找不到任何方法来更改 ${include_guard_symbol} 属性。

我的愿望是一个包含如下命名空间前缀的包含守卫:

#ifndef NAMSPACE1_NAMESPACE2_HEADER_HPP

但如果我为此使用#ifndef ${namespace_name}_${include_guard_symbol},它将产生:

namepace1::namespace2::_HEADER_HPP

我该怎么做?

【问题讨论】:

标签: customization eclipse-cdt include-guards


【解决方案1】:

我正在使用 Eclipse Oxygen (CDT 9.3),正如 Eelke 在他们的评论中所描述的,现在已经有一段时间的 UI 设置了。

但它只允许您从预设方案中进行选择,尚无可用的命名空间或更丰富的自定义选项。

在首选项对话框中搜索“守卫”,或导航到 C/C++ > 代码样式 > 名称样式并选择代码 > 包含守卫,然后从可用的守卫方案中进行选择。

【讨论】:

    【解决方案2】:

    我在 CDT 的源代码中进行了挖掘,发现了一个未记录的首选项设置,您可以使用它来更改 ${include_guard_symbol} 生成的内容。它也没有图形用户界面,但如果将codetemplates.includeGuardGenerationScheme 设置添加到<projectpath>/.settings/org.eclipse.cdt.ui.prefs,则可以在文件名(默认)、文件路径或UUID 之间进行选择。

    给定文件<projectpath>/src/include/Class.h,以下值给出这些结果:

    • 0 给出一个大写的文件名,即CLASS_H_
    • 例如,
    • 1 给出了一个 UUID。 HC9ABE718_D04E_411C_B5A2_F9FE1D9F9409
    • 2 给出一个大写的文件路径,即SRC_INCLUDE_CLASS_H_

    为避免任何疑问,这是我们.settings/org.eclipse.cdt.ui.prefs的内容:

    codetemplates.includeGuardGenerationScheme=2
    eclipse.preferences.version=1
    formatter_settings_version=1
    

    这显然不是您所追求的,但我们使用2 为我们提供了命名空间的近似值,因为一般来说,我们的命名空间遵循我们的文件夹结构。

    相关代码在 CDT 源中的这些文件中:

    • core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/PreferenceConstants.java 用于每个选项的常量
    • core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/codemanipulation/StubUtility.java 用于完成工作的 generateIncludeGuardSymbol() 方法。

    很高兴看到为使用命名空间添加了一个额外的选项,还有一个 GUI。

    【讨论】:

    • 对于我的 CDT 8.2.0,prefs 文件路径是:/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
    • 在 CDT 8.5(可能更早版本)中 Preferences > C/C++ > Code Style > Name Style 然后在 de Name Categories 框中选择 Code > Include Guard,这将向您显示此答案中提到的三个选项。虽然仍然没有命名空间选项:(
    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 2013-06-04
    • 2013-01-31
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2012-07-21
    相关资源
    最近更新 更多