c 头文件重复包含,C中如何防止一个头文件内容被重复包含

1 , C中如何防止一个头文件内容被重复包含把被包含的头文件的内容用#ifndef...#endif括起来,如:#ifndef MYHEADFILE int fun1(...); double proce1(...); ... #define MYHEADFILE#endif
2 , C语言 头文件重复包含问题 inndef 怎么用#ifndef BASE_H//如果没有定义过 BASE_H,就编译下面的代码#define BASE_H//定义这个宏#endif 在每一个.h文件,都使用这个编译指令 。即使多次 #include,也不会重复包含 。#ifndef BASE_H 如果首次 #include 这个.h文件 , BASE_H 没有被定义,所以这个.h文件就包含进来参与编译,同时定义了BASE_H 后续再次 #include 这个 .h 文件,由于 BASE_H已经定义过 , 所以在对应的 #endif 前的代码不参与编译,就不会出现两个基本信息结构体----------------------除了头文件的包含,ifdef 也会用在其他地方 , 比如判断编译环境,#ifndef _WIN64#define NULL 0#else#define NULL 0LL#endif
3,VC如何解决重复包含头文件的问题1、主要作用是声明,并不分配内存2、不编译的还是不编译,编不编译不是看区域,而是看内容,就好像宏定义一样,放在哪里都是预编译的3、头文件只对包含了该头文件的源程序文件起作用,所以4个cpp文件都需要包含这个头文件 ~~~~~~~~还有什么不清楚的可以直接用百度Hi【c 头文件重复包含,C中如何防止一个头文件内容被重复包含】
4,c语言 头文件互相包含怎么办1234567891011121314 头文件先把函数声明一下,如:.h文件:intfunc_a();intfunc_b();a.c文件intfunc_a() //实现}b.c文件intfunc_b() //实现}如果不在工程同一个目录下,就得用绝对路径#include<文件路径>或#include"文件路径"文件路径可以是绝对路径,如:c:\text.h#include "c:\text.h"5,C 头文件重复包含的问题在B中加上A中的类的声明: class A;或者抽离出C.h让A和B引用C你这种情况不叫重复包含,而叫循环包含,属于错误的写法 。a.h和b.h互相彼此包含,将导致编译器无休止的彼此包含,所以编译器会报错 。正确的做法是采用类前声明,方法避免循环包含 。具体做法如下:a.h中写#include "b.h"在a.h中可以直接定义类b的对象;比如 b m_b;而在b.h中不能直接写#include "a.h"应该写class a;//声明b是一个外部类class ba *pa;//声明一个指向a类对象的指针};然后在b.cpp中加入#include "a.h"再在b的构造函数中,使用new方式对pa进行实例化,构建a的类对象,并通过pa在程序中访问 。6,c 头文件多次包含头文件被多次包含是:如有一个大型程序,为了提高可读性,程序员是分多个文件编写 , 不会写在一个文件中的,这样的话程序员把每个文件都包含到主程序所在的文件中 , 不能多次包含,否则会出现编译出错?。。〉强馕募幕翱梢远啻伟? ,因为库文件中预编译命令 。预编译命令是看条件编译,如果条件成立编译,否则不编译,也就是你编译一个文件时已经编译过这个头文件,再编译另一个文件时不会再编译那条头文件 。#ifndef XXX #define XXX这两句放在头文件的开始....................................................//这些都是你的程序代码#endif放在头文件的最后这肯定可以的!你一定是把条件编译的位置放错了!我这么做从来都没出错过#ifndef应该好使才对你确定你的定义的位置是对的么?#ifndef XXX /* XXX */#define XXX// .. 你的定义也在这里么?#endif /* XXX */

    推荐阅读