• 5743阅读
  • 2回复

[提问]qint32类型别名定义 [复制链接]

上一主题 下一主题
离线aesoplord
 

只看楼主 倒序阅读 楼主  发表于: 2012-10-23
最近兴趣所致,关注了一下Qt内部实现的跨平台机制和代码,发现一个疑问:
qglobal.h里这样定义:
typedef int qint32;     /* 32 bit signed */

Qt帮助文档里这样描述:
Typedef for signed int.This type is guaranteed to be 32-bit on all platforms supported by Qt.

但是我的问题是,不是说int类型在不同字长的机器里sizeof的长度会不一样吗,不能保证一直是32位的,所以好多嵌入式软件里为了移植方便,才定义了好多类型别名如:uint32,int32等等。但是Qt这样定义,他怎么保证,难道这个长度跟CPU或者操作系统什么的都没关系,只跟编译器有关系,只要用Qt的编译器编译,int的长度就一直是32位的?


请各位大拿们在此赐教,谢谢啦。
离线ppdayz

只看该作者 1楼 发表于: 2012-10-23
回 楼主(aesoplord) 的帖子
int是和编译器有关的
编译器是和cpu相关的
你用不同的编译器,所链接的头文件和库文件也是不一样的
你在这个平台看到是
typedef int qint32;
别的平台会变成别的,瞎举个例子
typedef integer  qint32;
qt会保证在他支持的平台上都是32位的。

顺便说下,qt只是一个c++库,没有自己的编译器。调用的是别人的编译器。
离线aesoplord

只看该作者 2楼 发表于: 2012-10-23
谢谢你的回答。


但我没弄明白在Qt里qint32始终是int的类型别名,而int随着cpu字长会变化,那么qint32不是也应该随着变化吗?那如何像他帮助文档描述的那样做到跨平台呢?
typedef int qint32;     /* 32 bit signed */


另外,我知道Qt集成的编译器是mingw。再次谢谢你的热心解答。
快速回复
限100 字节
 
上一个 下一个