./a.cpp

./include/first.h

./include/include.first.h

 

g++ -I./ -I./include/include -I./include a.cpp

g++ -I./ -I./include -I./include/include a.cpp

 

会发生什么呢?上面两个first.h里面做的事情是不一样的哦~~

通过实验你会知道,如果能够在第一个路径里面找到期望的include文件,那么编译器是不会承认第二次找到的文件的!

 

这里两个first.h的格式都为

#ifndef FIRST_H
#define FIRST_H

class CFirst
{
    
//省略实现
};

#endif

如果把其中的一个#define FIRST_H改为FIRST_H_1,呵呵~ 结果又不一样咯~