我在当前目录和目录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)
答案 0 :(得分:0)
我设法通过添加来解决问题
export CPLUS_INCLUDE_PATH="/home"
我不知道为什么,但是看来CPLUS_INCLUDE_PATH
以冒号开头会引起问题(因为我的export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:path/to/include"
中有几个.bashrc