为什么C/C++的预处理指令#include不自动让所包含的文件只包含一次?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

为什么C/C++的预处理指令#include不自动让所包含的文件只包含一次?

2016-06-06 11:20:10 1679 1

在C/C++中#include所包含的头文件里面必须显式声明

#ifndef __HEADER_H_DEFINE__
#define __HEADER_H_DEFINE__

#endif
或者有些编译器支持

#pragma once

编译器完全有能力在执行预处理指令#include时使同一个文件只包含一次,但是却没有这么做,为什么?是否有需要包含同一个文件超过一次的情况?

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:27:59

    1、C/C++ 的函数和变量都可以重复声明。条件判断是为了防止不必要的函数被声明,从而造成冲突。

    他是为了避免重复编译,而不是解决重复声明。

    2、#pragma once 同一个文件不会被编译多次。注意这里所说的 同一个文件 是指物理上的一个文件,而不是指内容相同的两个文件。

    C/C++ 没有 Java 那种每个类对应一个文件的规定,所以即使使用了 #pragma once 也应该在头文件里面加上条件判断。

    0 0
相关问答

41

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 146824浏览量 回答数 41

53

回答

OSS C/C++ SDK分享交流区

否极泰来 2015-06-15 17:05:09 48692浏览量 回答数 53

49

回答

elasticjob vs xxl-job,应该选择哪一个?

FantuanTech 2022-02-16 00:09:57 49037浏览量 回答数 49

10

回答

windows版本oss c sdk如何上传和下载包含中文名的文件

yjseu 2015-11-20 17:14:30 16340浏览量 回答数 10

1

回答

【开源分享】-4期 Notepads 一款国人开发的UWP超好用文本编辑器

montos 2020-05-06 13:34:43 29440浏览量 回答数 1

58

回答

技术入门问答集锦,涉及多种技术方向,解决新人学习困惑

管理贝贝 2016-08-03 10:13:27 53512浏览量 回答数 58

5

回答

上传到OSS的文件md5hash值如何获取?!!

asker 2015-08-05 16:52:10 22341浏览量 回答数 5

38

回答

【论战!】访问压力大,你会选择升级ECS配置or选择再买1台ECS做负载均衡SLB

qilu 2014-12-25 17:32:40 21156浏览量 回答数 38

12

回答

电信云VS阿里云

米蛋 2013-12-13 23:25:52 16391浏览量 回答数 12

23

回答

【云服务器分享】网站访问速度快才是硬道理

dreamdoo 2012-10-15 10:15:02 86393浏览量 回答数 23
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载