添加了背景、头文件保护和前置声明三部分