Qt 引用头文件 QT_BEGIN_NAMESPACE QT_END_NAMESPACE
Qt里面引入头文件的两种方式:
1、
#include <QMdiArea>
#include<QSplashScreen>
2、
QT_BEGIN_NAMESPACE
class QMdiArea;
class QSplashScreen
QT_END_NAMESPACE
关于QT_BEGIN_NAMESPACE 和QT_END_NAMESPACE 比较好的解释:
比较好的解释:
QT_BEGIN_NAMESPACE其实就是个宏,以前Qt4是没有Qt命名空间的,后来才加上的,编译Qt源码时会有选项,是否将这些类放到专用的Qt命名空间内,默认是没有的。这就出来问题了,为了统一,如果你的代码在默认没有Qt命名空间的SDK中编译,那你就不用在前置声明下面这些类的时候加上命名空间,但如果你在有Qt命名空间的SDK中编译,那就得加上命名空间了,为了屏蔽这个差异,使得你的源码能在这两种情况下都进行编译,Qt提供了QT_BEGIN_NAMESPACE宏,这样开发者就省得自己来用程序或宏进行处理了。
class QDialogButtonBox;
class QPushButton;
class QSqlTableModel;
至于说加快编译速度什么的,那是上述三个类的前置声明的作用,这是与Qt无关的(也即与QT_BEGIN_NAMESPACE宏无关)。如果你在头文件中只用到一些类的指针(而非实现),那么就可以不包含这些类的头文件,而只使用上面形式的类型前置声明,而在具体实现时才包含入上面这些类型的头文件。如此,头文件里所包含的头文件减少了,那么使用到这个头文件的程序就能包含更少的内容,而不是每次都包含很多头文件,解析起来都耗时。
Qt 引用头文件 QT_BEGIN_NAMESPACE QT_END_NAMESPACE的更多相关文章
- 关于Dev-C++一种引用头文件<iostream>问题(暴力解决)
问题情况如下,因个人水平有限,不知道具体原因是啥,当引用头文件<iostream>时会出现如下问题,经排查,并不是头文件本身的问题,有可能是Dev哪一个文件被改动了,或者设置出了问题(前者 ...
- ASP.NET MVC 在子页中引用头文件
在很多时候我们把网站公共的js.css文件放在模板页中,这样在具体的每一个页面里面就不需要单独引用. ASP.NET WebForm里面使用.site文件. 而在ASP.NET MVC 中使用了类似下 ...
- 使用CocoaPods,文档中出现引用头文件找不到的问题。
现在很多人都会使用CocoaPods来管理自己使用的第三方开源代码,这两天我的工程中碰到了这样一个问题,当我使用CocoaPods来进行三方源码的引入,但是在实际的工程当中引入出现了这样一个问题,就是 ...
- C++----练习--引用头文件
1.创建头文件和源文件 touch /tmp/tools.h touch /tmp/main.cpp 2.各文件的内容如下: tools.h #include<iostream> void ...
- Win32:引用头文件
1.首先,在代码文件头部使用#include来包含任何头文件(扩展名为.h或者.hpp的文件)都不会“产生”额外的函数. 我们可以说,包含一个头文件之后,该头文件内部已经定义的一些变量,宏,函数等等资 ...
- cocoaspod使用 引用头文件找不到
使用cocoasPod做第三方类库管理非常方便,但是在使用的过程之中会遇到一些小问题!比如初次使用会遇到 引入类库,说找不到文件 target--build settings---user searc ...
- eclipse引用头文件报错问题-解决方法
最近在做一个U-BOOT相关的项目,经过几天的折腾最终放弃使用VIM和一堆附加插件.最终的出的结论是对于中大型工程项目还是要启用一些专业的IDE比较稳妥,尽管VIM提供的各种插件累加在一起足以实现专业 ...
- 引用头文件顺序问题 error C2039
建的WTL工程,用到CString和DataExchange 因为WTL和ATL都有对CString的定义 当先包含 atlstr.h 再包含 atlddx.h 时会出现以下错误 error C203 ...
- C语言 Include指令(引用头文件)
#include "one.h" #include "two.h" int main(int argc, const char * argv[]) { one( ...
随机推荐
- JavaScript------去掉Array中重复值
转载: http://blog.csdn.net/teresa502/article/details/7926796 代码: // 删除数组中重复数据 function removeDuplElem( ...
- Messages: No result defined for action cn.itcast.oa.test.TestAction and result SUCCESS
Struts Problem Report Struts has detected an unhandled exception: Messages: No result defined for ac ...
- 浏览器Chrome对WebGL支持判断
1.开启方式: 第一种:打开cmd,切换到Chorme的安装目录,敲入chrome.exe --enable -webgl,回车就会打开一个chrome浏览器窗口: 第二种:找到Chrome浏览器的快 ...
- oracle扩展dblink数。
[标记]在进行数据迁移时:出现 Compilation errors for PROCEDURE ZDGAME.GFF_FETCH_MZR_LOG Error: ORA-04052: error oc ...
- js常用总结
常用总结,方便大家学习共享. 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html-& ...
- Zookeeper(二)-- 客户端操作命令
一.前提 开启zookeeper服务端,用客户端连接.输入help,查看可使用命令,如下图所示: 操作无非就是增删改查等. 二.增加 格式:create [-s] [-e] path data acl ...
- oracle12c创建用户和表空间出现的问题
Oracle12c 中,增加了可插接数据库的概念,即PDB,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为 ContainerDatabase,中文翻译为数据库容器,PDB全 ...
- HTML5 ShadowDOM & CustomElements
Web组件由四部分组成 Template Shadow DOM (Chrome Opera支持) Custom Elements Packaging Shadow DOM 组成 Shadow DOM可 ...
- MQTT的学习研究(一)MQTT学习网站
MQTT的官方推荐网站: http://mqtt.org/software 使用IBM 的MQTT协议实现push消息地址: http://tokudu.com/2010/how-to-impleme ...
- 【算法】N Queens Problem
/* ** 目前最快的N皇后递归解决方法 ** N Queens Problem ** 试探-回溯算法,递归实现 */ #include "stdafx.h" #include & ...