C ++ preprocessor percorso di ricerca ordine di ricerca

1

L'ordine #include garantito dallo standard è l'ordine delle opzioni -I nel richiamo:

Esempio:

con cartelle e file:

A/foo.h
B/foo.h

può essere garantito che

#include <foo.h>

quando cpp è invocato con

... -I A -I B ...

scegli A/foo.h ?

    
posta Toni Homedes i Saun 26.09.2016 - 10:42
fonte

1 risposta

3

No, perché un'implementazione non deve prendere le opzioni della riga di comando. § 16.2.2 indica la forma dell'angolo (o l'inclusione dell'intestazione di sistema, non c'è un nome standard di cui sono a conoscenza (il suono è disattivato nei commenti)), il preprocessore:

searches a sequence of implementation-defined places for a header identified uniquely by the specified sequence between the < and > delimiters

L'intestazione non ha nemmeno bisogno di essere un file.

I compilatori specifici possono fare questa garanzia. Il manuale g ++ , ad esempio, afferma :

If you use more than one -I option, the directories are scanned in left-to-right order; the standard system directories come after.

    
risposta data 26.09.2016 - 11:39
fonte

Leggi altre domande sui tag