有没有一种简单的方法可以确保数据类型在C/C++中的不同平台和体系结构中保持相同的大小?如何确保数据类型与C++所需的一样大
在C++中,假设我写了一个假设,裸机程序:
#include <iostream>
int foo;
int main(void)
{
std::cout<<"Size of foo is "<<sizeof(foo)<<" bytes."<<std::endl;
return 0;
}
所有这些程序确实是打印的任意整数数据类型和出口的规模。在我的机器上,它返回foo
的大小为4个字节(我有一台64位机器)。
但是,让我们说,我写这个程序一个Arduino或其他ATMEGA供电的电路板:
int foo;
void setup()
{
Serial.begin(9600);
Serial.print("Size of foo is ");
Serial.print(sizeof(foo));
Serial.println(" bytes.");
}
void loop(){}
在我的Arduino UNO板,这只能返回2(大小相同short
我的机器上)。
是否有可能制作一个(优选跨平台)的头文件或声明,以确保数据类型的大小是一定的大小,以避免遇到精度问题或非常大的数字问题?理想情况下,这不仅适用于Arduino板卡,也适用于其他紧凑型MCU(如PicKit)。
我对Arduino和整个Arduino IDE相对来说比较新,所以如果我错过了一些超级简单的东西,请原谅我。
@Dieter:感谢您清理那些垃圾。 –
是否有某些原因导致您无法使用宽度特定类型'int8_t','int16_t'等? – shuttle87
@ shuttle87:不是那些类型的非标准吗? –