方法一:在.h头文件开头加上#pragma once
//add.h
#pragma once
int ADD(x,y);
方法二:在.h头文件加上预定义指令
//add.h
#ifndef _ADD_H_/*第一次包含该头文件时,没有定义_ADD_H_,该预处理为真,则下面便定义_ADD_H_符号;如果想第二次包含该头文件时, 此时_ADD_H_已经定义,判断为假,则下面的语句都不进行预处理,即不再引入*/
#define _ADD_H_
int add(x,y); //h
...
#endif
两者的区别:
#pragma once
1.无法对一个头文件中的某一段代码作pargma once声明,只能针对文件
2.编译器保证:同一个文件不会被包含多次,“同一个文件”实际上指的是物理上的一个文件,而不是指内容相同的两个文件
3.因为不用宏定义,所以也没有宏名冲突的问题,不用为想宏名而烦恼
4.不支持跨平台
5.某些老版本的编译器不支持
#ifndef / #define / #endif1.要定义宏名,宏名容易相同,不过宏名一般都是头文件的大写
2.受C/C++语言标准支持,不仅可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件或代码段不会被重复包含
3.编译大型项目时,这种方法的编译时间相对比较长
4.移植性比较好
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)