#ifndef...#define...#endif与#pragma once深度解析(不是比较区别)
来源:互联网 发布:剑三脸型数据怎么复制 编辑:程序博客网 时间:2024/05/20 09:47
——————- 文件 1.h ———————————-
#pragma onceclass A{public: static int x;public: void func();};int A::x = 1;
——————– 文件 1.cpp ———————–
#include "1.h"void A::func(){ ;}
——————– 文件 main.cpp ———————–
#include<iostream>#include"1.h"int main(){ A a; return 0;}
出现重定义错误。再看第二个例子:
——————————a.h————————
#pragma onceint a = 0;
——————————–main.cpp—————————-
#include<iostream>#include "a.h"#include "a.h"#include "a.h"#include "a.h"#include "a.h"#include "a.h"using namespace std;int main(){ cout << a << endl; return 0;}
不会出现错误。
结论:
第一个例子中,只有一个文件包含了.h,#pragma once的引入避免了重定义;
第二个例子,是两个文件包含了.h,我的错误是发生在obj->exe链接过程中,此时#pragma once没起到作用。我可不可以这么理解:
pragma once的作用只对一个文件的多次包含起作用,而对多份文件的包含不起避免重定义错误的作用。
1 0
- #ifndef...#define...#endif与#pragma once深度解析(不是比较区别)
- #pragma once与#ifndef #define #endif的区别 (比较全)
- #pragma once 与 #ifndef...#define...#endif的比较
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once 和#ifndef ... #define ... #endif 比较
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#ifndef #define #endif的区别
- #pragma once与#ifndef #define ...#endif的区别
- #pragma once与#define #ifndef ...#endif的区别
- #pragma once与#ifndef #define #endif
- [Windows编程] #pragma once 和#ifndef ... #define ... #endif 比较
- [RK3288][Android6.0] 音频调试方法小结
- 个人网站
- setsockopt()函数功能介绍
- Axis2开发WebService客户端 的3种方式
- 【jzoj5049】【腐女的生日】【扫描线】【数据结构】
- #ifndef...#define...#endif与#pragma once深度解析(不是比较区别)
- Remove Linked List Elements
- nmon安装
- String池化及intern方法的作用
- Unity官方实例教程 Space Shooter(太空射击游戏)
- 删除一个字符串中的空格
- hibernate检索策略
- [SMOJ1773]原子弹
- Android DES数据加密