У меня есть несколько заголовков a.h
с одинаковыми именами в текущем каталоге и в каталоге inc
.Я бы хотел, чтобы тот из текущего каталога был включен в main.cpp
, но мне нужен другой заголовок b.h
из каталога inc
.Однако GCC сначала не ищет заголовки в текущем каталоге.Почему?
main.cpp
#include <iostream>
#include "a.h"
#include "b.h"
int main(int argc, char *argv[])
{
(void)argc;
(void)argv;
std::cout << FOO << std::endl;
std::cout << BAR << std::endl;
return 0;
}
build/a.h
#define FOO 1
inc/a.h
inc/b.h
#define BAR 1
из build/
каталога:
build$ g++ -I. -I../inc ../main.cpp -o ../main
../main.cpp: In function ‘int main(int, char**)’:
../main.cpp:10:18: error: ‘FOO’ was not declared in this scope
std::cout << FOO << std::endl;
^
Если удалить, inc/a.h
, все работает.
gcc версии 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.11)