Есть такая программка:
#include <cstdio>
int main(int argc, char **argv)
{
char s[] = { 1, 1, 1, 77, 135, 29, 67 };
int offset = 3;
float d_value = *(float *)(s+offset);
printf("%f\n", d_value);
return 0;
}
/*****************************/
Компилирую на свой машине:
# g++ -O2 -o test test.cpp
# ./test
157.528519
С компилятором что 4.1.2 что 3.4.6 работает нормально.
Теперь кросскомпилирую для ARM (atmel rm9200, little endian, кросскомпилятор gcc-3.4.3):
# arm-linux-g++ -O2 -o test test.cpp
На приборе через терминал запускаю:
# ./test
0.000000
************************************************
Почему во втором случае получается 0.0 ?
Спасибо.
Форум —
Development

