(C语言)定义宏 以防止重复包含此头文件 这句话是什么意思?? 40
5个回答
展开全部
当1个C语言程序由 多个 源程序文件 组成时,由于每个 源程序文件 都有 #include <...>
#include "...h", 最终它们可能形成交叉 包含 和 重复包含 现象 而造成错误。
为了避免这种情况发生,可以 采用 定义宏 的方法 把各个头文件 包起来。
编译器 在正式编译的开始,现处理 宏 -- 也就是“预编译命令".
用 宏(#号开始的行) 把 头文件内容 包起来:
#ifndef _HEADER_One_H_ // 意思是:宏开始行,如果还没有定义 _HEADER_One_H_ 则 进入,否则退出
#define _HEADER_One_H_ //定义 _HEADER_One_H_//
header1.h
头文件内容
#endif // 宏结束行
#include "...h", 最终它们可能形成交叉 包含 和 重复包含 现象 而造成错误。
为了避免这种情况发生,可以 采用 定义宏 的方法 把各个头文件 包起来。
编译器 在正式编译的开始,现处理 宏 -- 也就是“预编译命令".
用 宏(#号开始的行) 把 头文件内容 包起来:
#ifndef _HEADER_One_H_ // 意思是:宏开始行,如果还没有定义 _HEADER_One_H_ 则 进入,否则退出
#define _HEADER_One_H_ //定义 _HEADER_One_H_//
header1.h
头文件内容
#endif // 宏结束行
展开全部
1,防止类型和常量的多次定义;
2,防止内联函数或宏重复定义
3,防止反复编译同一头文件的内容
因为一个头文件可以被很多文件包含,如果不止一个其他头文件,已经包含了某个头文件,当同时使用这两个头文件里的内容时(即同一.c或.cpp先后包含这两个头文件,那么就会出现同一头文件,被包含两次以上的情况,如果不写头文件的保护代码,那么那个公用头文件里的类型定义,常量定义,宏定义,以及内联函数和模板类,模板函数就会出现重复定义的错误!
2,防止内联函数或宏重复定义
3,防止反复编译同一头文件的内容
因为一个头文件可以被很多文件包含,如果不止一个其他头文件,已经包含了某个头文件,当同时使用这两个头文件里的内容时(即同一.c或.cpp先后包含这两个头文件,那么就会出现同一头文件,被包含两次以上的情况,如果不写头文件的保护代码,那么那个公用头文件里的类型定义,常量定义,宏定义,以及内联函数和模板类,模板函数就会出现重复定义的错误!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为在编译的过程中是会链接你所引用到的头文件(.h文件),你在多个C文件里同时包含同一个.h文件系统就会报错,所以在每个C文件里加一句条件编译的语句,这样有利于防止重复包含的错误!不懂的话可以追问!希望可以帮助到你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果头文件被包含于多个.c文件中,若头文件中包含全局变量的定义或者声明,很容易造成重复定义,导致编译无法通过,编译器报错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用
#pragma once
或者使用
#ifndef _XXX_H_
#define _XXX_H_
//header
#endif
编写头文件,以防止头文件被多次包含
#pragma once
或者使用
#ifndef _XXX_H_
#define _XXX_H_
//header
#endif
编写头文件,以防止头文件被多次包含
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询