我知道#ifndef #endif可以防止重复编译,这是什么意思呢,可能你包含了A.h也包含了B.h,但是A.h已经包含了B.h,如果B.h不用#ifndef #endif则会重复包含,假设B里面定义了一个变量int a;则会出现重复定义的错误,因为编译的时候打开A,A里面有B,就把B 也打开了,然后又包含B,又把B打开一次,然后就出错了,所以加了#ifndef #endif就只会编译一次了,包含A的时候编译过B 了,所以再包含B 的时候就跳过了。(问题1:关于具体是如何跳过的我其实并不清楚,不知道是包含的时候直接跳过还是仅编译的部分跳过了,然后还是包含了上次编译好的头文件)这是对一个CPP文件是这样的,假设AB都写了#ifndef #endif,但是AB在另一个CPP里面出现了,这句#ifndef #endif是不是不起作用,问题2:即#ifndef #endif只是保证同一个CPP中的头文件不会重复编译?不同的CPP会单独把头文件展开