Per molti compilatori, incluso gcc, l'opzione -I
specifica una directory per cercare i file include, non un singolo file. Non conosco un'opzione per includere un singolo file. Per prima cosa, un tale oggetto non specificerebbe dove nella sorgente inserire la direttiva #include
.
Anche se esistesse una tale opzione, non la consiglierei di usarla. La scelta di quali intestazioni includere sono informazioni che dovrebbero essere nel file sorgente. Se dovessi specificarlo sulla riga di comando, dovresti disaccoppiare quelle informazioni dal file sorgente (presumibilmente in un Makefile o qualcosa di simile), il che renderebbe il codice sorgente più difficile da comprendere e da mantenere. E chiunque provi a trasferire il tuo software su un altro sistema di compilazione dovrebbe portare tale opzione separatamente.
Presumibilmente la maggior parte dei tuoi file sorgente include intestazioni diverse da stdinclude.hpp
. Includere quel file tramite l'opzione del compilatore e tutto il resto tramite direttive #include
esplicite, è arbitrario e potenzialmente confuso.
Avendo un esplicito
#include <stdheader.hpp>
o, poiché fa parte del tuo progetto:
#include "stdheader.hpp"
fai sapere al lettore che il tuo codice utilizza qualcosa definito in quell'intestazione.
Se questo è tutto per il tuo file stdheader.hpp
, potresti anche considerare di lasciarlo cadere e di utilizzare ogni file sorgente
#include <memory>
#include <stdexcept>
direttamente. In questo modo, i tuoi lettori sapranno esattamente cosa è #include
d e non dovranno sapere né preoccuparsi di ciò che è in stdheader.hpp
. Questo è un vantaggio piuttosto buono per una riga in più per file. Se stdheader.h
diventa più elaborato, utilizzarlo potrebbe avere più senso.