2
下面的代碼:如何讓gcc在生成.data段時忽略填充?
#include <stdint.h>
uint8_t byte = 0x12;
uint16_t word = 0x1234;
int main(int argc, char *argv[])
{
return 0;
}
檢查的.data
部分,它表明byte
可變2個字節,而不是1,uint8_t
承諾:
Hex dump of section '.data':
0x00601020 00000000 00000000 00000000 00000000 ................
0x00601030 12003412 ..4.
我們如何才能確保byte
爲1個字節,甚至它會使內存錯位?我嘗試加入#pragam pack(1)
,但它仍然是一樣的。
是否有你想要的特定原因? –
爲什麼你會想禁用[堆棧對齊和填充](http://stackoverflow.com/questions/1061818/stack-allocation-padding-and-alignment)? –
因爲我想知道'byte'變量是否被用作2個字節,而不是1個字節。但是,似乎,當我嘗試設置'byte = -1'時,只有一個字節變爲'ff'。看起來'gcc'確保填充字節不會在所有生成的代碼中使用。 –