当你用VC的菜单新增一个类,你会发现自动生成的代码总是类似下面的样子:

#if !defined(AFX_XXXX__INCLUDED_)#define  AFX_XXXX__INCLUDED_具体代码#endif

这是为了防止头文件被重复包含。重复包含可以用下面的例子来说明:比如有个头文件a.h,里面有个函数Fa;另一个头文件b.h,里面有函数Fb, Fb的实现需要用到Fa,则b.h中需要包含a.h;有个cpp文件中的函数需要用到Fa和Fb,则需要包含a.h和b.h,此时a.h就发生了重复包含。编译程序,出现如下错误:

error C2084: function 'bool __cdecl Fa()' already has a body

解决办法是在a.h的中加入:

#ifndef A#define A原来的代码#endif

参考文章:头文件为什么要加#ifndef #define #endif

C语言头文件为什么要加#ifndef #define #endif(防止头文件重复包含)相关推荐

  1. 头文件为什么要加#ifndef #define #endif

    一 #ifndef 在头文件中的作用 一个大的软件工程里有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量"重定义"的错误.这时在头文件中使用#ifn ...

  2. #ifndef #define #endif ”防止头文件被重复包 .

    #include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码: #include "x.h" #include "x.h" ...

  3. ifndef/define/endif——主要目的是防止头文件的重复包含和编译

    原文:http://www.jb51.net/article/100939.htm 原文:https://blog.csdn.net/abc5382334/article/details/180527 ...

  4. c/c++头文件中#ifndef/#define/#endif的用法

    想必很多人都看过"头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用".但是是否能理解"被重复引用"是什么意思?头文件被重复 ...

  5. #ifndef/#define/#endif 防止该头文件被重复引用

       转载自:http://blog.csdn.net/abc5382334/article/details/18052757    想必很多人都看过"头文件中的 #ifndef/#defi ...

  6. C++中#ifndef/#define/#endif使用详解

    想必很多人都看过"头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用".但是是否能理解"被重复引用"是什么意思?是不能在不同的两个 ...

  7. #ifndef/#define/#endif

    #ifndef/#define/#endif 头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用 "被重复引用"是指一个头文件在同一个cpp文件中被i ...

  8. 【转载】#pragma once与#ifndef #define #endif的区别

    一.相同点         两者的共同点都是为了避免同一个文件被 include 多次,但是 #ifndef #define #endif 不只有这个作用.  在能够支持这两种方式的编译器上,二者并没 ...

  9. #ifndef/#define/#endif使用详解

    https://blog.csdn.net/abc5382334/article/details/18052757 想必很多人都看过"头文件中的 #ifndef/#define/#endif ...

最新文章

  1. MongoDB 搭建副本集
  2. Java IO流面试题
  3. HDOJ 1316 How Many Fibs?
  4. 001.Parted工具使用
  5. Xamarin.Android 使用ListView绑定数据
  6. 开发asp.net2.0手机用网站 点滴[xgluxv]
  7. 用C语言实现面向对象的开发
  8. 安卓项目中的R.java文件丢失如何解决
  9. mybatis的缓存技术使用
  10. 《干货集锦》——前端大牛 Addy Osmani 的15个精彩PPT
  11. Mars说光场(5)— 光场在三维人脸建模中的应用
  12. java图片处理,文字自动换行
  13. 计算机丢失msvcr100.dll解决办法,计算机丢失MSVCR100.dll
  14. 网线,交换机基础命令
  15. BI项目实施为什么成功率那么低
  16. 如何把catia完全卸载干净_电脑卸载不了catia软件怎么办?电脑彻底卸载catia软件的方法...
  17. 这次把怎么做好一个PPT讲清-演讲篇
  18. 基于Python的ERP系统中主生产计划(MPS)的计算
  19. 如何将本地文件自动备份到百度网盘?
  20. FreeBSD安装vmtools波折

热门文章

  1. python爬虫怎么爬小说_python从爬虫基础到爬取网络小说实例
  2. 【学习笔记】SAP 成本对象控制
  3. 【PM模块】PM模块主数据
  4. 【增强】FI行项目报表增强任意字段
  5. 天合汽车安全技术(张家港)有限公司
  6. SAP HANA要改变什么?
  7. 从“电商合伙人”到“品牌掌柜”,快手电商“军训”进行时
  8. android ndk jni so,Android Studio Ndk So 文件
  9. spark 写tidb_tidb使用坑记录
  10. angular 指定components的路径_如何手动启动 Angular 程序