有沒有一種簡單的方法可以確保數據類型在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:不是那些類型的非標準嗎? –