关于 c语言 头文件 51单片机 reg52.h 的问题
为什么在reg52.h头文件里面要加上#ifndef__REG52_H__#define__REG52_H__..................#endif为什么要加上...
为什么在reg52.h头文件里面要加上
#ifndef __REG52_H__
#define __REG52_H__
........
.....
.....
#endif
为什么要加上这行呢
是什么意思?
有什么用?
没xuan 展开
#ifndef __REG52_H__
#define __REG52_H__
........
.....
.....
#endif
为什么要加上这行呢
是什么意思?
有什么用?
没xuan 展开
2个回答
展开全部
防止头文件被重复包含出现重定义的问题。
首先同一个变量被定义2次肯定是一个问题,
比如
const int32_t l_age = 20;
const int32_t l_age = 30;
使用
#ifndef __REG52_H__
#define __REG52_H__
sfr xx = yy;
.....
.....
#endif
的格式可以避免出现类似问题。
假定 a.h中有#include <reg52.h>
假定b.h中有#include <reg52.h>
假定c.h中
#include<a.h>
#include<b.h>
假定c.c中
有#include<c.h>
展开为
#ifndef __REG52_H__
#define __REG52_H__
sfr xx = yy;
.....
.....
#endif
#ifndef __REG52_H__
#define __REG52_H__
sfr xx = yy;
.....
.....
#endif
因为之前有过_REG52_H_的宏定义
所以下一个#ifndef __REG52_H__直接跳过,
这个解决了这个重复定义的问题。
首先同一个变量被定义2次肯定是一个问题,
比如
const int32_t l_age = 20;
const int32_t l_age = 30;
使用
#ifndef __REG52_H__
#define __REG52_H__
sfr xx = yy;
.....
.....
#endif
的格式可以避免出现类似问题。
假定 a.h中有#include <reg52.h>
假定b.h中有#include <reg52.h>
假定c.h中
#include<a.h>
#include<b.h>
假定c.c中
有#include<c.h>
展开为
#ifndef __REG52_H__
#define __REG52_H__
sfr xx = yy;
.....
.....
#endif
#ifndef __REG52_H__
#define __REG52_H__
sfr xx = yy;
.....
.....
#endif
因为之前有过_REG52_H_的宏定义
所以下一个#ifndef __REG52_H__直接跳过,
这个解决了这个重复定义的问题。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询