#pragma once

  在C/C++中,为了避免同一个头文件被重复包含,最常用的方式是使用宏:#ifndef ... #define ... #endif,除此之外还有一种方式:#pragma once。

第一种方式:

1 #ifndef PORTAL_USER_H
2 #define PORTAL_USER_H
3 ...
4 ...
5 #endif

第二种方式:

1 #pragma once
2 ...
3 ...

  #ifndef, #define, #endif是C/C++语言中的宏定义,依赖于宏名字不能冲突来避免头文件多次包含。它不仅可以保证同一个头文件不会被包含多次,也能保证内容完全相同的两个文件不会被同时包含。但是,如果不同头文件中的宏名不小心”碰撞”,可能就会导致你看到头文件明明存在,编译器却找不到声明的状况。由于编译器每次都需要打开头文件才能判定是否有重复定义,因此在编译大型项目时,此方式会使得编译时间相对较长,因此一些编译器逐渐开始支持#pragma once的方式。这种方式是所有C/C++编译器都支持的,如果写的程序要跨平台,最好使用这种方式。

  #pragma once是编译器相关的,有的编译器支持,有的编译器不支持。相对于使用宏方式,使用此种方式,大型项目的编译速度会有所提高。

   

posted on 2018-10-22 17:59  泣血  阅读(217)  评论(0)    收藏  举报

导航