C++ `int`假定在OpenCV中始终为32位?

C++ `int`假定在OpenCV中始终为32位?,c++,opencv,C++,Opencv,似乎在OpenCV中,int数据类型总是假定为32位。这反映在文档中(例如,),也反映在源代码中(例如,在modules/core/include/opencv2/core/cvdef.h的注释中,它将uint定义为32位无符号整数,但没有定义相应的有符号类型) 在int不是32位的系统上,这如何不破坏OpenCV?毕竟,根据标准,int只能保证为16位 我希望OpenCV为它使用的所有大小定义数据类型(就像它为int64所做的那样),或者使用uint_8和friends 在int不是32位的系

似乎在OpenCV中,
int
数据类型总是假定为32位。这反映在文档中(例如,),也反映在源代码中(例如,在
modules/core/include/opencv2/core/cvdef.h
的注释中,它将
uint
定义为32位无符号整数,但没有定义相应的有符号类型)

int
不是32位的系统上,这如何不破坏OpenCV?毕竟,根据标准,
int
只能保证为16位

我希望OpenCV为它使用的所有大小定义数据类型(就像它为
int64
所做的那样),或者使用
uint_8
和friends

在int不是32位的系统上,这如何不破坏OpenCV

可能是的。你应该尝试建立这样一个系统来确保。再次,我祝你们好运,找到这样一个系统,它仍然有足够的内存和CPU能力来进行有意义的计算机视觉;如今,16位
int
通常出现在非常小的嵌入式系统上


获得至少32位宽的快速类型的干净方法是使用
中的
int\u fast32\t
类型,但这需要C99支持,而Microsoft的C编译器长期不支持该标准。

当然,基本数据类型可能因平台而异,我相信
int
在大多数情况下是4个字节,您可能会关心这些字节。例如,在英特尔编译器中描述了
long
的变化,但表示“对于上述所有操作系统和体系结构组合,“int”整数类型的大小为4字节。”在中也是4字节。事实上,请参见第3节。基本上所有有趣的东西都是4。@BoBTFish:x86特定指南并不是最好的声明来源:)