#pragma once的作用
#pragma once 作用: 1. 当一个头文件被多个源文件或其他头文件直接或间接 #include 时,该指令能确保它只被编译一次。 2. 避免宏名冲突:传统的 #ifndef 保护需要为每个文件设计独特的宏名(如 __MY_HEADER_H__), 若不小心在不同文件用了相同的宏名会导致代码失效;而 #pragma once 基于物理文件路径,彻底避免了命名污染和冲突。 3. 书写简洁:只需在头文件最上方写一行即可,无需写 #ifndef、#define 和 #endif 4 与#ifndef的区别: 4.1 标准性:#ifndef 是 C++ 标准支持的传统方法(也称 Include Guard); 而 #pragma once 虽然是非标准指令,但现代绝大多数主流编译器(如 GCC、Clang、MSVC)都提供了完美支持。 4.2 控制粒度:#ifndef 可以防范同一文件内局部的 代码片段 重复,而 #pragma once 只能针对 整个物理文件 。