aaarrr 69 14 августа, 2011 Опубликовано 14 августа, 2011 · Жалоба Спасибо Вам за профессиональный "костыль". Просто у меня в программе около около десятка таких функций с подобными аргументами, потому и столько предупреждений. Не должны потери квалификаторов измеряться десятками - скорее всего, это означает, что применены они не по делу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smoky 0 14 августа, 2011 Опубликовано 14 августа, 2011 · Жалоба Не должны потери квалификаторов измеряться десятками - скорее всего, это означает, что применены они не по делу. Я электронщик, программированием был вынужден заняться ибо без микроконтроллеров никуда. Отношу себя к начинающим, С изучал по учебному пособию Бредли Л.Джонса и Питера Эйткена. О передаче в функции адресов переменных в качестве аргументов описано весьма кратко. Если можно, укажите где можно почитать об этом более подробно. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 14 августа, 2011 Опубликовано 14 августа, 2011 · Жалоба &akk1.ucon имеет тип void * Откуда вдруг void *? О передаче в функции адресов переменных в качестве аргументов описано весьма кратко. Если можно, укажите где можно почитать об этом более подробно. Увы, учебную литературу не подскажу - как-то так получилось, что ничего, кроме стандарта и справочников, по "C" не читал :( Расскажите, как в программе объявлен akk1, и почему он объявлен именно так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smoky 0 14 августа, 2011 Опубликовано 14 августа, 2011 (изменено) · Жалоба Расскажите, как в программе объявлен akk1, и почему он объявлен именно так. Переменная akk1 объявлена глобально как структура, почему именно так? Скорее всего исходя из предыдущего опыта: volatile struct { byte index; byte numprg; byte capind; byte ucon; byte hitmpr; byte error; byte outzrz; word maxvlt; word captr; word cloc1; word cloc2; word tmpair; dword sumcap; }akk1; Изменено 14 августа, 2011 пользователем дымок Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 14 августа, 2011 Опубликовано 14 августа, 2011 · Жалоба А volatile действительно нужен? (Сам факт использования объекта в прерывании не является безусловным к тому показанием.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smoky 0 14 августа, 2011 Опубликовано 14 августа, 2011 · Жалоба А volatile действительно нужен? (Сам факт использования объекта в прерывании не является безусловным к тому показанием.) Скорее всего я использую его на всякий случай, а что он может быть проблемой в моёи случае? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 14 августа, 2011 Опубликовано 14 августа, 2011 · Жалоба Так он, собственно, и вызывает ругань в 42-х местах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smoky 0 14 августа, 2011 Опубликовано 14 августа, 2011 · Жалоба Так он, собственно, и вызывает ругань в 42-х местах. Спасибо Вам, действительно volatile был всему виной. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smoky 0 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба Очень прошу дать ответ на следующий вопрос, почему компилятор в WinAVR ругается на выражение типа: *cloc_prm++; Однако при просмотре примеров других программ используются именно такие выражения. Потому мне приходится использовать: *cloc_prm=*cloc_prm+1; в таком виде выражение принимается без проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 10 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба Из-за приоритета операций. В Вашем случае следует записывать (*cloc_prm)++ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smoky 0 15 августа, 2011 Опубликовано 15 августа, 2011 · Жалоба Из-за приоритета операций. В Вашем случае следует записывать (*cloc_prm)++ Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
777777 0 18 августа, 2011 Опубликовано 18 августа, 2011 · Жалоба Уважаемые форумчане, подскажите пожалуйста наиболее оптимальный вариант поиска последовательности нескольких байт. То есть есть последовательность байт, например ......0x05 0x51 0x12 0x64 0xC0 0x66 0x41.................................................. И вот мне нужно найти начало последовательности 0x64 0xC0 0x66 Как это сделать? :smile3046: Спасибо за внимание. Если нужен действительно наиболее оптимальный вариант, то это алгоритм Бойера-Мура Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 18 августа, 2011 Опубликовано 18 августа, 2011 · Жалоба Забыл сказать что я использую WinAVR. Жаль что Вы уклонились от ответа, в принципе я пробовал, не получилось. Потому мой ответ на мой вопрос отрицательный. typedef unsigned char volatile event; #define BIT_FIELD :1 typedef struct stEvents { event Event1 BIT_FIELD ; event Event2 BIT_FIELD ; event Event3 BIT_FIELD ; event Event4 BIT_FIELD ; } stEvents; Встречал и такие варианты: typedef char bool; #define true 1 #define false 0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Smoky 0 18 августа, 2011 Опубликовано 18 августа, 2011 · Жалоба typedef unsigned char volatile event; #define BIT_FIELD :1 typedef struct stEvents { event Event1 BIT_FIELD; event Event2 BIT_FIELD; event Event3 BIT_FIELD; event Event4 BIT_FIELD; } stEvents; На эти битовые поля можно использовать указатели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexeyv 0 19 августа, 2011 Опубликовано 19 августа, 2011 · Жалоба На эти битовые поля можно использовать указатели? Ни на какме битовые поля нельзя использовать указатели. Указатель содержит только адрес памяти. А на битовое поле необходимо еще его положение в байте и его длину. Где это все хранить? typedef unsigned char volatile event; #define BIT_FIELD :1 typedef struct stEvents { event Event1 BIT_FIELD; event Event2 BIT_FIELD; event Event3 BIT_FIELD; event Event4 BIT_FIELD; } stEvents; Вся эта ф_гня заменится предпроцессором и на вход компилятора все равно попадет: typedef struct stEvents { unsigned char Event1 :1; unsigned char Event2 :1; unsigned char Event3 :1; unsigned char Event4 :1; } stEvents; Даже если мы корову назовем тигром, то она все равно не перестанет быть коровой и не начнет есть мясо!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться