如何检查c++中的一个头文件是否包含另一个头文件
how to check if one header include another header in c++?
如何检查一个头是否包括另一个头在c++?
例如,当我想知道是否包含,但包含两个多个头和头包含其他头。所以我必须一个一个地检查源代码,所以有什么快速的方法来发现如果一个包含另一个吗?
应该使用include保护符。这将确保编译器不会多次包含头文件内容。
使用标准include保护的头文件MyClass.h
示例:
// MyClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
// Your header contents goes here
#endif
这将确保编译器只包含头文件内容一次。
或者,您可以使用#pragma once
。
一个示例头文件,MyClass.h
,使用非标准#pragma once
:
// MyClass.h
#pragma once
// Your header contents goes here
注意#pragma once
不是标准的,因此它将使您的代码的可移植性降低。但是,它确实使用了较少的代码,并且可以避免名称冲突。
如果myheader.h
有我们所说的包含保护,那么它通常会#define
一个名为MYHEADER_H
的宏。所以首先检查你的头文件是否有这种东西
如果是,您可以使用#ifdef
和#ifndef
指令在任何时候检查它是否已被包含(到该点为止)。
在某些情况下,其他答案中提到的头保护将不够(例如,您的文件在多个系统上使用,或者是针对单独的版本或库构建的,并且hguard不一致)。在这些情况下,您可以:
- 在标题 中查找另一个标识符
或者简单地将您包含的头替换为您自己的小包装头,其
#define
不会因平台/体系结构而变化,然后将您的#include
替换为包装头。说明:#ifndef MON_HGUARD_CXX_CSTDIO #define MON_HGUARD_CXX_CSTDIO // now replace the following #include with inclusion of this header #include <cstdio> #endif // MON_HGUARD_CXX_CSTDIO
#define
d相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 挂起和取消挂起一个文件DLL
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- C++试图读取一个文件并输出到另一个文本文件
- 如何从另一个文件继承私有成员变量和公共函数
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何打开并写入一个名称取自C++中字符串的文件
- 构建一个由C和C++文件组成的库
- c++多进程编写一个唯一的文件
- 如何使用CLion在Mac上创建一个新的.txt文件
- 如何将class.cpp和class.hpp编译为一个.o文件
- 写入文件会产生一个空文件或根本没有文件
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- 为什么我的 heap.h 文件给我一个LNK2001错误?
- Pantheios 不使用 MFC 应用程序写入一个文件(一个 exe + 两个 DLL)
- 在C++中一次读取一个文件一个int
- 输入/输出文件(一个字母的大写)
- 如何使用两个预编译的头文件.一个用于托管代码,另一个用于非托管代码.xxx.PCH不是一个有效的预编译头文件