在C++的头文件中,为了防止重复包含,需要使用预处理指令#pragma once或者传统的条件编译方式。下面分别详细说明这两种方式的写法及作用:
#pragma once
使用#pragma once指令: #pragma once是一种简便的方式,可以确保头文件只被编译一次。在头文件的开头加入#pragma once即可,示例如下:
#pragma once
// 头文件的内容
传统方式
用条件编译方式: 除了#pragma once外,也可以使用传统的条件编译方式来防止重复包含。在头文件的开头和结尾加入条件编译指令,示例如下:
#ifndef MY_HEADER_H
#define MY_HEADER_H
// 头文件的内容
#endif // MY_HEADER_H
上述代码中,ifndef表示如果MY_HEADER_H宏未定义,就执行下面的代码并定义MY_HEADER_H宏;endif表示结束条件编译;ifdef表示如果宏已经定义过,就不会再次编译头文件。
以上是两种防止重复包含的方式,一般来说,推荐使用#pragma once指令,简单易用且不易出错。当然,条件编译方式也是有效的做法,在传统项目中仍然有一定的应用。
#ifndef取名的规范
实际上,MY_HEADER_H是一个常见的宏定义,用于防止重复包含。可以使用任何唯一的宏名称来代替它。通常,建议使用头文件的名称加上一个下划线来构成宏名称,确保其唯一性。例如,如果头文件名为my_header.h,则可以定义如下的宏:
这样就可以防止同一个头文件被重复包含多次,确保程序的正确编译。
#ifndef MY_HEADER_H_
#define MY_HEADER_H_
// 头文件的内容
#endif // MY_HEADER_H_
标签:头文件,编译,重复,c++,HEADER,pragma,MY,once
From: https://blog.csdn.net/qq_71286244/article/details/139664541