Я пытаюсь удалить каждый ненужный шаблонный код из моих личных проектов. Первое, что я заметил, это первая строка каждого заголовочного файла #pragma. Не так удивительно.
Однако я хотел бы попросить мой компилятор (clang SVN HEAD version) автоматически добавить эту строку в мои заголовочные файлы (например, с помощью шаблона, подобного этому: src / *. Hpp). Я думаю, что есть очень редкие случаи, когда вы действительно хотите включить один заголовок несколько раз.
С помощью инструментов Clang эту проблему можно решить, но мне нужно немного помочь, чтобы запустить это расширение.
Теоретическое использование этого инструмента / расширения:
clang --auto-pragma-once src/*.hpp src/*.cpp -o test
Спасибо за любой совет
РЕДАКТИРОВАТЬ:
Я не хочу хранить эту прагму один раз в моем файле. Поэтому любой редактор или любые другие инструменты, которые помещают новые файлы в файлы, не работают для этой проблемы.
Этот раздел посвящен разовому включению заголовочных файлов, а не прагме.
Просто прикуси пулю и вставь прагму в заголовочные файлы. Это всего лишь одна строка, и если ничего нет, это может смутить других, кто просматривает ваши файлы.
Я не уверен, почему вы хотите использовать Clang для этого. Это зависит
в редакторе, но каждый редактор, которого я знаю, позволяет запускать на
такие вещи, как открытие нового файла, имя которого соответствует конкретному
шаблон, и вставьте шаблон в него. В промышленности это довольно
сильно запрещено не использовать это, так как это как авторское право
уведомления вставляются. В моем случае, например, если я создаю
новый файл с именем xyz.hh, редактор придумывает
/****************************************************************************/
/* File: xyz.hh */
/* Author: J. Kanze */
/* Date: 25/09/2013 */
/* Copyright .... */
/* ------------------------------------------------------------------------ */
#ifndef xyz_hh_20130925QPIvFK6xMJYLBhSpv58ROPOU
#define xyz_hh_20130925QPIvFK6xMJYLBhSpv58ROPOU
#endif
// Local Variables: --- for emacs
// mode: c++ --- for emacs
// tab-width: 8 --- for emacs
// End: --- for emacs
// vim: set ts=8 sw=4 et filetype=cpp: --- for vim
Если я делаю это в моей рабочей области, уведомление об авторских правах
разные, включенные охранники следуют другому стандарту, и
есть также #pragma один раз.