ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
61780 Топик полностью
ReAl (02.07.2006 15:12, просмотров: 1) ответил Павел В. на Тройка относилась к "толпе лонгов", т.е массиву данных типа Long. И давайте отделим мух от котлет.
Да, ступил малость. Указатель на функцию - это указатель на неполный тип и его можно только разименовывать, адресная арифметика недопустима. И ругня на тот второй мой пример, думаю, связана только с этим, а не с тем, что указатель на int и указатель на функцию - это какие-то "разные" указатели. Можешь проверить, ругня на эти две строки должна быть одинаковая, хотя структура st_t, да ещё и в ОЗУ - может размещаться по любому адресу.
struct st_t;
struct st_t *pst;
void foo(void) {
    * ((void(*)())0 + 3) ();
    pst = (struct st_t*)0 + 3;
}
Т.е. выравнивание тут ни при чём. Насколько я помню, у MSP430 не только команды, но и 16-битные переменные не могут размещаться по нечётному адресу, интересно - что компиляторы по его поводу думают :-)