以下函数(从.cpp文件中提取)给出两个不同的结果(即输出缓冲区int_image
不同)如果在带有Visual Studio的PC上运行(cpu Intel i7运行Windows 7)或在我的Android手机上(P880)。 im1
类型的两个输入缓冲区im2
和int8
(char
的同义词)完全相同(已选中),以及参数{{1 }和w
。我不明白为什么会这样:
h
请注意。 char图像im1和im2的大小可能会发生整数溢出(但我认为这种情况由两个编译器同等处理,但此时我不太确定)。
答案 0 :(得分:2)
找到错误来源。我将int8
定义为char
,认为默认情况下它是一个签名字符。相反,它在gcc上是无符号的,而在Visual C ++上签名。我不知道标准说的是什么,但我建议所有程序员在为signed char
和unsigned char
定义自己的宏时明确使用int8
和uint8
。
Interesting discussion about this on stackoverflow.