Как получить $ {include_guard_symbol} в Eclipse с путем к файлу в верхнем регистре?

При определении шаблонов кода в Eclipse CDT, мы можем использовать переменную с именем ${include_guard_symbol} что переводится как MYFILE_H,

Я хотел бы иметь что-то более явное: SRC_MYFOLDER_MYFILE_H,

Я следовал инструкциям, приведенным в ответ на вопрос переполнения стека Настройка include-guard для Eclipse CDT, но все, что я получаю, это для ${include_guard_symbol} вернуть пустую строку! Я также видел другие связанные вопросы о переполнении стека о добавление пространства имен к включаемой защите, но это не то, что я ищу.

Я использую Eclipse версии 3.5.2 с CDT версии 6.0.2.

Есть ли другой способ достижения желаемого результата?

9

Решение

Самая старая версия, которую я установил, — 3.7, и я проверил там и на 4.2, и ссылочная ссылка делает именно то, что хочет ОП. (OP использует 3.5.2). Для тех, кто приезжает сюда в будущем, здесь есть шаги

  1. Выход из Eclipse
  2. Перейдите в папку рабочей области, а затем продолжайте переходить к \.metadata\.plugins\org.eclipse.core.runtime\settings
  3. Мне всегда нравится делать резервную копию папки настроек, прежде чем делать моды
  4. Загрузите файл с именем org.eclipse.cdt.ui.prefs в текстовый редактор
  5. Добавьте эту строку (я поставил свою в строке 3)
    codetemplates.includeGuardGenerationScheme=2
  6. Сохраните файл.
  7. Перезапустите затмение

Я создал папку с именем MyFolder в моей папке src. Затем я щелкнул правой кнопкой мыши и добавил новый заголовочный файл, результат был:

#ifndef SRC_MYFOLDER_TEST_H_
#define SRC_MYFOLDER_TEST_H_

#endif /* SRC_MYFOLDER_TEST_H_ */
4

Другие решения

Основные моменты из этого: Как настроить шаблоны кода Eclipse CDT

Одним из решений является выбросить ${include_guard_symbol} в шаблоне все вместе, и определись сам, возможно, с использованием некоторых других предопределенных переменных. Что-то вроде этого:

${filecomment}

#ifndef MyProject_${file_base}_h
#define MyProject_${file_base}_h

${typecomment}
${declarations}

#endif /* MyProject_${file_base}_h */

Таким образом, для заголовочного файла с именем inc / Foo.h, включающий охранник будет вставлен так:

#ifndef MyProject_Foo_h
#define MyProject_Foo_h

К сожалению, кажется, нет способа настроить намного больше. Например, если я определил класс, вложенный в пространство имен, я мог бы захотеть поместить пространство имен как часть включенного защитника. Я не могу найти способ сделать это в затмении, в настоящее время.

0

Не совсем ответ на ваш вопрос, но я хотел бы предложить альтернативу. Защитники включения обеспечивают рабочий, хотя и грубый способ запретить включение кода в заголовочный файл более одного раза для каждой единицы компиляции. В качестве альтернативы вы можете использовать

#pragma once

директива компилятора. Я понимаю, что это не определено в стандарте, но поддерживается многими компиляторами, включая GNU, Clang, MSVC и Intel. Если вы используете #pragma onceвы теряете небольшую переносимость и избегаете столкновений имен, которые, как я полагаю, являются причиной, по которой вы хотите изменить ${include_guard_symbol} на первом месте.

Вы также можете проверить http://en.wikipedia.org/wiki/Pragma_once для более тщательного обсуждения.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector