Я рассмотрел вопросы правильно использовать директиву include и С++ #include semantics, и ни один из адресов это - и другие, предложенные SO, когда я набрал название...
Что, если таковые имеются, являются преимуществами написания:
#include "../include/someheader.h"
#include "../otherdir/another.h"
по сравнению с использованием простого имени файла:
#include "someheader.h"
#include "another.h"
или, возможно, относительное имя без '..
':
#include "include/someheader.h"
#include "otherdir/another.h"
Я вижу следующие проблемы:
- Вы не можете перемещать заголовок, не беспокоясь о том, какие исходные файлы включают его.
- Вы можете получить очень длинные пути для заголовков в зависимостях и отчетах об ошибках. Сегодня у меня был "
../dir1/include/../../include/../dir2/../include/header.h
".
Единственное, что я вижу, это то, что, хотя вам не нужно перемещать файлы, вы можете уйти, не всегда используя директивы "-I
" для поиска заголовков, но потеря гибкости и сложность компиляции в под-подкаталогах и т.д., кажется, перевешивает выгоду.
Итак, я не вижу преимущества?
Спасибо за входные данные. Я думаю, что консенсус в том, что нет никаких существенных преимуществ для нотации, использующей "..", которую я пропускаю. В общем, мне нравится нотация "где-то/header.h"; Я использую его в новых проектах. Тот, над которым я работаю, не что иное, как новый.
Одна из проблем заключается в том, что существуют различные группы заголовков, часто с префиксом, таким как rspqr.h
, rsabc.h
, rsdef.h
, rsxyz.h
. Все они связаны с кодом в каталоге rsmp
, но некоторые заголовки находятся в rsmp
, а другие находятся в центральной директории include, в которой нет подкаталогов, таких как rsmp
. (И повторите для разных других областей кода, есть заголовки в нескольких местах, которые необходимо случайным образом выполнять с помощью других битов кода.) Перемещение материала вокруг является серьезной проблемой, потому что код стал настолько запутанным на протяжении многих лет. И make файлы несовместимы, в которых предусмотрены опции -I
. В целом, это печальная история о не столь благожелательном пренебрежении в течение нескольких десятилетий. Фиксировать все это, не нарушая ничего, будет долгой, утомительной работой.