博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
头文件#ifndef #define #endif使用
阅读量:4614 次
发布时间:2019-06-09

本文共 951 字,大约阅读时间需要 3 分钟。

  想必很多人都看过“头文件中的 #ifndef #define #endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?

其实“被重复引用”是指一个头文件在同一个c文件中被include了多次,这种错误常常是由于include嵌套造成的。比如:对于a.h,b.h中有#include a.h,现在我们在编辑c.h文件,我们同时#include a.h, #include b.h,这就会导致a.h被导入两次

头文件被重复引用引起的后果:

有些头文件重复引用只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些,但是对于大工程而言编译效率低下那将是一件多么痛苦的事情。
有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但确实是C规范允许的)这种会引起重复定义。

是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码?

答案:不是一定要加,但是不管怎样,用ifnde xxx #define xxx#endif或者其他方式避免头文件重复包含,只有好处没有坏处。个人觉得培养一个好的编程习惯是学习编程的一个重要分支

下面给出一个头文件定义的sample:

1 #pragma once 2 #ifndef __SEQLIST_H__ 3 #define __SEQLIST_H__ 4 #include 
5 #define SEQ_INIT_SIZE 8 6 typedef int ElemType; 7 typedef struct SeqList 8 { 9 ElemType *base;10 int capacity;11 int size;12 };13 void InitSeqList();14 #endif //__SEQLIST_H__

 

转载于:https://www.cnblogs.com/z-joshua/p/6445788.html

你可能感兴趣的文章
【bzoj】2733: [HNOI2012]永无乡
查看>>
让一些旧浏览器变牛逼的库 ========兼容性
查看>>
datatable-提示
查看>>
还是没有什么看的
查看>>
素材上传
查看>>
python爬虫实例
查看>>
php 数组 用指定的值做key
查看>>
正则表达式 常规的一些用户登录验证信息
查看>>
MySQL存储过程实现动态执行SQL
查看>>
iText7生成pdf
查看>>
java中向JTextArea中添加滚动条(垂直的和水平的)
查看>>
jsp经验-Listener监听
查看>>
Ios中时间无法响应
查看>>
seo关键词
查看>>
wince 触摸和audio驱动中添加postmessage
查看>>
实验报告1
查看>>
20162319莫礼钟 实验四 图及应用
查看>>
转: 页面缓存测试
查看>>
leetcode Letter Combinations of a Phone Number
查看>>
idea中git快捷键
查看>>