Quais são os benefícios de um caminho relativo, como "../include/header.h" para um cabeçalho?

Revi as perguntasComo usar a diretiva include corretamente e C ++ #include semântica e nem aborda isso - nem os outros sugeridos por SO quando digitei o título ...

Quais são, se houver, os benefícios de escrever:

#include "../include/someheader.h"
#include "../otherdir/another.h"

comparado com o uso de apenas um nome de arquivo simples:

#include "someheader.h"
#include "another.h"

ou talvez um nome relativo sem o '.. ':

#include "include/someheader.h"
#include "otherdir/another.h"

Os problemas que vejo são:

Você não pode mover um cabeçalho sem se preocupar com os arquivos de origem que o inclue Você pode acabar com caminhos muito longos para cabeçalhos em dependências e relatórios de erros. Eu tive um hoje com "../dir1/include/../../include/../dir2/../include/header.h ".

O único mérito que vejo é que, embora você não precise mover arquivos, talvez seja possível fugir sem sempre usar '-I 'diretivas para encontrar cabeçalhos, mas a perda de flexibilidade e a complexidade de compilar em subdiretórios subdiretórios etc. parece compensar o benefíci

Então, estou com vista para um benefício?

Obrigado pelas entradas. Eu acho que o consenso é que não há grandes benefícios para a notação usando ".." que estou ignorando. Em termos gerais, gosto da notação "algures / header.h"; Eu o uso em novos projetos. O que eu estou trabalhando é tudo menos novo.

Um dos problemas é que existem vários conjuntos de cabeçalhos, geralmente com um prefixo comorspqr.h, rsabc.h, rsdef.h, rsxyz.h. Tudo isso está relacionado ao código norsmp, mas alguns dos cabeçalhos estão norsmp e outros estão no diretório include central, que não possui subdiretórios comorsmp nisso. (E repita para as várias outras áreas do código; existem cabeçalhos em vários locais, necessários aleatoriamente por outros bits do código.) Mover coisas é um grande problema, porque o código ficou tão complicado ao longo dos anos. E os makefiles não são consistentes nos quais-I opções são fornecidas. Em suma, é uma triste história de negligência não tão benigna ao longo de um período de décadas. Consertar tudo sem quebrar nada será um trabalho longo e tedios

questionAnswers(7)

yourAnswerToTheQuestion