#pragma once和#ifndef用法

参考:https://www.cnblogs.com/qiang-upc/p/11407364.html

1.两者都是用于为了同一个头文件在项目中被应用多次造成的变量重定义等问题

2.#pragma写在头文件的第一行保证该头文件不会被引用两次,#ifndef的用法如下可以在头文件的任意位置,保证其中包裹的代码内容不被重复使用,一般清理包裹头文件中的全部代码:

#ifndef _TEST_H_(自定义的宏名称)
#define _TEST_H_(自定义的宏名称)
int a=10;
int x =10;
#endif
 

3.#pragma这种用法比#ifndef出现得早,所以有些比较老得编译器可能不支持#pragma,也就是#ifndef的兼容性更好

4.#ifndef可以只将头文件的某段代码包含在内以保证该段代码内容不被重复引用,而#pragma则一般写在头文件的顶端只能保证整个头文件不被重复引用

5.#ifndef后面需要接一个自己定义的宏名称,通过保证项目中不允许存在两个同名的宏来保证其中包裹的代码只能被引用一次,如果项目中有两个不同的头文件但使用了同样的宏名称,则会出现有一个头文件中的内容不能被引用的问题

6.#pragma是根据头文件的名称来保证项目中不允许引用两个同名的头文件,如果项目中两个不同名称的两个头文件,但是两个头文件的内容一样,还是会出现重复定义的问题

posted @ 2021-02-25 10:06  maycpou  阅读(221)  评论(0编辑  收藏  举报