Il compilatore AC o C ++ cerca i file di intestazione usando un set severo di regole: relativo alla directory del file incluso (se è stato usato "", quindi lungo i percorsi di inclusione specificati e predefiniti, esito negativo se non ancora trovato.
Uno strumento ausiliario come un analizzatore di codici (su cui sto attualmente lavorando) ha requisiti diversi: potrebbe, per una serie di ragioni, non avere il beneficio della configurazione eseguita da un complesso processo di compilazione, e dover fare il meglio di ciò che è dato. In altre parole, può trovare un file di intestazione non presente nei percorsi di inclusione che conosce e deve fare del suo meglio per trovare il file stesso.
Attualmente sto pensando di utilizzare il seguente algoritmo:
-
Inizia nella directory del file incluso.
-
Il file di intestazione si trova nella directory corrente o in una sua sottodirectory? Se è così, fatto.
-
Se siamo nella directory root, il file non sembra essere presente su questa macchina, quindi saltatelo. Altrimenti, passa al padre della directory corrente e vai al passaggio 2.
È questo il miglior algoritmo da usare? In particolare, qualcuno sa di casi in cui un diverso algoritmo avrebbe funzionato meglio?