关于重复包含
1、ifndef
#ifndef __TEST_H__ #define __TEST_H__ //...... #endif
该种方式依赖于宏名字不能冲突,可以保证天你哥哥文件不会被包含多次,即使内容完全相同的两个文件(不同目录下)。
缺点宏名字冲突时会报错:导致头文件命名存在,编译器却找不到声明。
2、pragma
#pragma once
//....
预处理指令,在头文件的最开始加入这条指令:该头文件只被编译一次。
该条件也能保证同个文件不会被重复包含。同个文件指物理上的同个文件,并非内容相同的两个文件。
该指令有效避免使用宏名,也就避免了宏名字冲突的问题。
综上,1. #ifndef 由语言支持所以移植性好,#pragma 可以避免名字冲突