#pragma once
功能类似于 c/c++ 的预编译头, #ifndef...#define...#endif,用于避免重复定义和编译。
若在文件的开头部分声明 #pragma once,则
(1)编译时,此文件仅被编译一次
(1)若此文件被多个文件包含,最终编译前,则保证仅被包含一次
(3)若有多个此文件的副本,则不能保证仅被编译一次或包含一次
(4)非 c/c++ 宏定义标准,所以可能并非所以的编译器都支持此宏定义
#ifndef...#define...#endif,与#pragma once 不同,
(1) #ifndef...#endif 包围起来的内容仅被编译一次或包含一次,不管此文件有多个不同名字的副本文件
(2) #pragma once 仅确保声明了的文件被编译一次或包含一次,对于有多个副本的情况,不能保证仅被编译一次或包含一次
(3)#ifndef...#define...#endif 为c/c++标准宏定义,一般编译器都会支持;#pragma once 不是 c/c++ 的 标准宏定义,可能并非所以的编译器都支持