Как установить приоритет конфликтующих заголовков c ++

Представьте, что у вас есть два something.h в двух разных каталогах. Вы не можете писать в эти каталоги и не иметь root-доступа.

У вас есть код, который делает:

```
#include 

```

Как вы определяете использование something.h в определенном каталоге и игнорируете другое?

Как правило, список каталогов, которые имеют право на поиск того, что считается системой, включает (с использованием угловых скобок в #include), предоставляется как набор  `-I`  для компилятора. Часто они включают каталоги, указанные в make-файлах или файлах проекта.

Многие (но не обязательно все) компиляторы будут соблюдать порядок каталогов, перечисленных как включенные каталоги, поэтому вы должны быть в состоянии выбрать свое предпочтение, изменив этот порядок в своих файлах make-файлов. Однако в некоторых компиляторах это может быть сложно, так как некоторые каталоги считаются всегда включенными (например, gcc по умолчанию предполагает, что вы включили `/usr/include` ).
Другими словами, это очень специфическая реализация.

Если вы используете не угловые скобки, а двойные кавычки, вы можете просто указать нужный файл прямо как  `#include "dir/file.h"` .



попробуйте использовать:   

 `#include "../ directory/something.h"`    

Обратите внимание, что GCC ищет заголовки, используя  [путь поиска](https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html#Search-Path) .   

Вы также можете попросить GCC искать файлы заголовков в указанных каталогах. Используйте  `-iquote dir` , чтобы добавить каталог  `dir`  в список списка каталогов для поиска файлов заголовков.