#ifndef #define #endif 和#pragma once的区别

相同点:#ifndef #define #endif 和 #pragma once 都是用来保证一个.h文件只被编译一次。

不同点:

1.

#ifndef #define #endif 用来防止一个宏被重复定义多次;

 #pragma once 可以防止一个.h文件被一个.cpp重复include。嵌套包含时这种情况很常见,比如说.cpp中include .1h和.2h,而在.1h中又包含了.2h,这样.2h就等于被.cpp包含了2次。 #pragma once 就是为了解决这种情况而发明的,它可以提高编译时的效率。

2.#ifndef #define #endif是C++语言相关,这是C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式;

 #pragma once 是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了

原文地址:https://www.cnblogs.com/jswu-ustc/p/8565317.html