各位好:
下列程式
#include <stdio.h>
#include <stdlib.h>
struct SS2
{ char On;
float FV;
}__attribute__ ((packed)) FS[10];
void modify(float *p)
{ static float fv=1.5;
*p = fv;
fv++;
}
int main(void)
{ short i;
for(i=0;i<10;i++)
{ modify(&FS [ i ] .FV);
printf("%02d->%05.2f\n",i,FS [ i ] .FV);
}
return 0;
}
原本希望出現
/home # ./scale
00->01.50
01->02.50
02->03.50
03->04.50
04->05.50
05->06.50
06->07.50
07->08.50
08->09.50
09->10.50
結果出現是
00->00.00
01->00.00
02->00.00
03->04.50
04->00.00
05->00.00
06->00.00
07->08.50
08->00.00
09->00.00
顯然__attribute__ ((packed))沒有作用
參數如此下
root@aderho:/home/work/scale# make
/opt/toolchains/arm920t-eabi/bin/arm-linux-g++ -fsigned-char -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/QtEmbedded-4.5.0/arm/o/mkspecs/qws/linux-arm-g++ -I. -I/usr/local/Trolltech/QtEmbedded-4.5.0/arm/o/include/QtCore -I/usr/local/Trolltech/QtEmbedded-4.5.0/arm/o/include/QtNetwork -I/usr/local/Trolltech/QtEmbedded-4.5.0/arm/o/include/QtGui -I/usr/local/Trolltech/QtEmbedded-4.5.0/arm/o/include -I. -I. -I. -o main.o main.cpp
/opt/toolchains/arm920t-eabi/bin/arm-linux-g++ -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/QtEmbedded-4.5.0/arm/o/lib -o scale main.o -L/usr/local/Trolltech/QtEmbedded-4.5.0/arm/o/lib -lQtGui -L/opt/tslib/arm/o/lib -L/usr/local/Trolltech/QtEmbedded-4.5.0/arm/o/lib -lts -lQtNetwork -lQtCore -lz -lm -lrt -ldl -lpthread
有勞各位提供一點建議!
感謝!
[ 此帖被aderho在2010-11-30 16:06重新编辑 ]