C++ Error:C2011: 'struct' type redefinition

       在c语言中,对同一个变量或者函数进行多次声明是不会报错的。所以如果h文件里只是进行了声明工作,即使不使用# ifndef宏定义,一个c文件多次包含同一个h文件也不会报错。
  但是在c++语言中,#ifndef的作用域只是在单个文件中。所以如果h文件里定义了全局变量,即使采用#ifndef宏定义,一个c文件包含同一个h文件多次还是会出现全局变量重定义的错误。
  使用#ifndef可以避免下面这种错误:如果在h文件中定义了全局变量,一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误;如果加了#ifndef,则不会出现这种错误。
    最好把头文件的内容都放在#ifndef和#endif中。不管头文件会不会被多个文件引用,都要加上这个。一般格式是这样的:
  #ifndef <标识>
  #define <标识>
  ......
  ......
  #endif
  <标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前面加下划线,并把文件名中的“.”也变成下划线,如:stdio.h
  #ifndef _STDIO_H
  #define _STDIO_H
  ......
  #endif
   条件编译有三种形式,理解了其中一种以后碰到了再收即可。(转自网络)

最新文章

  1. Q: ossfs挂载时如何设置权限?
  2. iOS一些关于日历的问题
  3. C#基础---委托的使用
  4. GridView按钮事件
  5. PullToRefresh下拉刷新 加载更多 详解 +示例
  6. 数位dp整理
  7. JavaScript高级程序设计:第十二章
  8. myeclipse快捷键(转载)
  9. nginx中支持.htaccess并禁止php在特定目录无法运行
  10. 解析Visual C# 7.2中的private protected访问修饰符
  11. ZedBoard前期准备工作
  12. 关于R语言中dnorm,pnorm,qnorm,rnorm的用法
  13. Java -- POI -- 随笔汇总
  14. Mysql数据库如何自动备份
  15. STM32F4的sct文件理解
  16. 【Android自动化】在使用uiautomator框架自动化时,往往有时再运行脚本时发现xxx实例属性不被允许
  17. ThinkPHP框架知识(比较全的知识)
  18. Nginx的几个常用配置和技巧
  19. mongodb常用的查询命令例子
  20. Python学习之路 (三)爬虫(二)

热门文章

  1. Linux常用的性能分析
  2. 如何删除Word文档中的空白页
  3. RBAC访问控制
  4. 【面试题】面试突击71:GET 和 POST 有什么区别?
  5. 常用的基础方法,对象转数组,phpcurl请求
  6. echarts:双y轴图表刻度均匀分布问题
  7. spring 创建 bean 的 几种方式
  8. Windows Terminal 中 WSL2 默认打开路径
  9. 11、java环形单链表解决约瑟夫问题
  10. Neo4j权威指南学习笔记第一章