一、没有在文件头加#pragma once指示符,然后重复包含。
二、两个不同的头文件中定义了相同的类型(均有#pragma once)
三、虽然是一个文件但是属于不同路径下
比如说在src中A模块有a.h这个头文件,项目编译完之后,在include文件夹中对应A模块文件夹下也有a.h这个文件。
A模块中b.h中有如下代码:
#include "./a.h"
A模块中c.h中有如下代码:
#include "A/a.h"
此时,是包含了2个不同路径上的文件,结果导致类型重定义。