#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 只能针对整个物理文件。
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 只能针对整个物理文件。
Comments
Post a Comment