在C/C++中#include所包含的头文件里面必须显式声明
#ifndef __HEADER_H_DEFINE__
#define __HEADER_H_DEFINE__
#endif
或者有些编译器支持
#pragma once
编译器完全有能力在执行预处理指令#include时使同一个文件只包含一次,但是却没有这么做,为什么?是否有需要包含同一个文件超过一次的情况?
1、C/C++ 的函数和变量都可以重复声明。条件判断是为了防止不必要的函数被声明,从而造成冲突。
他是为了避免重复编译,而不是解决重复声明。
2、#pragma once 同一个文件不会被编译多次。注意这里所说的 同一个文件 是指物理上的一个文件,而不是指内容相同的两个文件。
C/C++ 没有 Java 那种每个类对应一个文件的规定,所以即使使用了 #pragma once 也应该在头文件里面加上条件判断。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。