1 #ifndef ?
#ifndef我们是经常看到的,它是一种防卫式声明语法,用来防止重复包含头文件的。
1.1 #ifndef使用方法
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
...
#endif
上面代码中,会加在mainwindow.h文件中,当其他文件包含这个头文件时,就不会重复包含头文件了。
1.2 #ifndef的特点
#ifndef的方式依赖于宏名字不能冲突,当两个不同的头文件的宏名不小心“撞车”时,可能会导致无法正确包含头文件。
2 #pragma once ?
#pragma once也是用来防止重复包含头文件的,它一般由编译器保证,同一文件不会被包含多次。这里的“同一文件”是指物理上的一个文件,而不是指内容相同的两个文件。
2.1 #pragma once快速使用
一般在每个头文件上面都加上下面这句话:
#pragma once
2.2 #pragma once的特点
使用#pragma once不用担心产生宏重名的情况,它可以保证只包含文件一次。
3 #ifndef和#pragma once对比
#ifndef这种使用方法由语言支持,移植性好;但是需要宏名不要“撞车”。
#pragma once这种方法则需要编译器支持,移植性差;但它可以避免宏名冲突,并且在大型项目中编译速度比使用#ifndef更快。