1.
#include “head.h” 是将head的头文件放到所引用的函数中。
如下列,是无法编译。原因:函数重复。
head.h如下:
int getSquareSides(){
return 4;
}
geometry.h:
#include "head.h"
main.cpp中:
#include "square.h"
#include "geometry.h"
int main(){
return 0;
}
因此,编译之后,main函数如下所示:
int getSquareSides() // from square.h
{
return 4;
}
int getSquareSides() // from geometry.h (via square.h)
{
return 4;
}
int main()
{
return 0;
}
因此,这个看似无辜的程序无法编译!
首先,main.cpp #includes head.h,它将函数getSquareSides的定义复制到main.cpp中。
然后main.cpp #includes geometry.h,其中#include head.h本身。
这将head.h的内容(包括函数getSquareSides的定义)复制到geometry.h中,然后将其复制到main.cpp中。