简单来说就是防止多次包含, 类似与下面的代码
#ifndef XXX
#define XXX
//some code
#endif
以下两段代码含义相同
// header.h: 标准系统包含文件的包含文件,
// 或特定于项目的包含文件
//
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容
// Windows 头文件
#include <windows.h>
// C 运行时头文件
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
// header.h: 标准系统包含文件的包含文件,
// 或特定于项目的包含文件
//
#ifndef once
#define once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容
// Windows 头文件
#include <windows.h>
// C 运行时头文件
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#endif
第一段代码显然要好一些, 避免了 once 的重名
这个是在VS中看见的, 不知道适不适用与其他编译器或平台.
维基百科,自由的百科全书
跳到导航跳到搜索
在C和C++编程语言中,#pragma once是一个非标准但是被广泛支持的前置处理符号,会让所在的文件在一个单独的编译中只被包含一次。以此方式,#pragma once提供类似include防范的目的,但是拥有较少的代码且能避免名称的碰撞。