Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Цифровые сигнальные процессоры (DSP) и их применение»

Массив меня не путает, но что касается арифметических действий с указателями, тут вы все правы.

Отправлено GM 09 апреля 2009, г. 15:24
В ответ на: Вас массив путает отправлено пользователем Ald 09 апреля 2009, г. 09:44

Поэкспериментировал с long, как yes подсказал, тихий ужас, вот эти две строчки дают разный результат (для тексаса sizeof(Uint16)=1, sizeof(long)=2)

rcv_b0[1]=(long *)bufsize+0x6D88; //0xDB60
rcv_b0[1]=bufsize+(long *)0x6D88; //0x6E28

Обычно для арифметических выражений (АВ) все переменные должны приводиться к одному типу, потом вычисляться, а тут такого нет. Ну ладно, здесь как-то ещё можно объяснить, что мол АВ для указателей вычисляются по-другому, но вот следующие строчки практически ничем не отличаются, отличие только в паре круглых скобок, а результат разный

rcv_b0[1]=(long *)0x6D88+bufsize; //0x6E28
rcv_b0[1]=(long *)(0x6D88+bufsize); //0x6DD8

Просто кошмар какой-то, ни в какие ворота не лезет, тоже мне хвалёный си, да здесь ошибка может вылезти на ровном месте, и много трудов надо потратить, чтобы её найти.

Спасибо всем, особенно Аld и yes за их долготерпение.


Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 47:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru