MST

星途 面试题库

面试题:C++中#if!defined宏在头文件保护中的常规应用

请详细描述在C++中,#if!defined宏是如何实现头文件保护的?并举例说明其具体的代码结构。
41.2万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. #if!defined宏实现头文件保护的原理
    • #if!defined 结合 #define 用于防止头文件被重复包含。当编译器第一次遇到头文件时,#if!defined 检查某个特定的宏是否已定义。如果未定义,#if!defined 条件为真,头文件中的内容会被编译,并且通过 #define 定义一个唯一的宏。当下次编译器再遇到这个头文件时,由于之前已经定义了该宏,#if!defined 条件为假,头文件中的内容就不会再次被编译,从而避免了重复定义的错误。
  2. 举例说明具体代码结构: 假设我们有一个名为 example.h 的头文件,代码如下:
// example.h
#ifndef EXAMPLE_H // 等价于 #if!defined(EXAMPLE_H)
#define EXAMPLE_H

// 头文件内容,例如声明函数、结构体等
void exampleFunction();

struct ExampleStruct {
    int value;
};

#endif

在上述代码中,#ifndef EXAMPLE_H 检查 EXAMPLE_H 这个宏是否已定义。如果未定义,就执行 #define EXAMPLE_H 定义这个宏,并且编译下面声明函数和结构体的代码。如果头文件再次被包含,EXAMPLE_H 已经定义,#ifndef EXAMPLE_H 条件不成立,就不会重复编译函数和结构体的声明部分,避免了重复定义错误。