fk0, легенда (15.08.2011 15:01, просмотров: 97) ответил SciFi на У меня было последствие: ф-ция printf() неправильно выводила float, когда указатель стека при её вызове не был кратен 8. Но это было на ARM7TDMI.
printf("", (int)1, (float)2) и printf("", (float)1, ...) дадут положение аргумента типа float на стеке как раз на 4 байта выше-ниже. Т.е. если сбой возникает когда "не кратен 8" -- он будет возникать всегда и это никак не исправить пока компилятор не научится работать с любыми более широкими данными выровненными всего-лишь на границу int. Разве не так? Или va_arg умеет учитывать, что float должен быть выровнен на 8? И соответственно при вызове, когда аргументы в стек кладутся, это тоже учитывается? Сомнительно. :-/
[ZX]