g ++不会先在当前目录中搜索标题

时间:2019-06-11 10:36:07

标签: c++ g++

我在当前目录和目录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)

1 个答案:

答案 0 :(得分:0)

我设法通过添加来解决问题

export CPLUS_INCLUDE_PATH="/home"

我不知道为什么,但是看来CPLUS_INCLUDE_PATH以冒号开头会引起问题(因为我的export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:path/to/include"中有几个.bashrc