Настройка include-guard для Eclipse CDT - PullRequest
15 голосов
/ 27 июля 2011

Я хочу автоматически сгенерированный include-guard, создав новый класс C ++ с Eclipse / CDT, но я не нахожу способа изменить атрибут ${include_guard_symbol}.

Мое желание - это include-guard с префиксом пространства имен, например:

#ifndef NAMSPACE1_NAMESPACE2_HEADER_HPP

Но если я использую #ifndef ${namespace_name}_${include_guard_symbol} для этого, он выдаст:

namepace1::namespace2::_HEADER_HPP

Как я могу это сделать?

Ответы [ 2 ]

15 голосов
/ 03 марта 2012

Я покопался в источнике для 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(), который выполняет работу.

Было бы неплохо добавить дополнительную опцию для использования пространства имен и графический интерфейс.

1 голос
/ 19 сентября 2017

Я использую Eclipse Oxygen (CDT 9.3), и, как Eelke описал в их комментарии, некоторое время назад для этого была настройка пользовательского интерфейса.

Однако он позволяет выбирать только из предустановленных схем, пока нет доступных пространств имен или более широких возможностей настройки.

Найдите «охранник» в диалоговом окне настроек или перейдите к C / C ++> Стиль кода> Стиль имени и выберите «Код»> «Включить охрану», а затем выберите одну из доступных схем защиты.

enter image description here

...