|
|
  |
Вопрос по си |
|
|
|
Aug 14 2011, 13:50
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(aaarrr @ Aug 14 2011, 18:25)  Не должны потери квалификаторов измеряться десятками - скорее всего, это означает, что применены они не по делу. Я электронщик, программированием был вынужден заняться ибо без микроконтроллеров никуда. Отношу себя к начинающим, С изучал по учебному пособию Бредли Л.Джонса и Питера Эйткена. О передаче в функции адресов переменных в качестве аргументов описано весьма кратко. Если можно, укажите где можно почитать об этом более подробно. Спасибо.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Aug 14 2011, 14:19
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(_Pasha @ Aug 13 2011, 19:38)  &akk1.ucon имеет тип void * Откуда вдруг void *? Цитата(дымок @ Aug 14 2011, 17:50)  О передаче в функции адресов переменных в качестве аргументов описано весьма кратко. Если можно, укажите где можно почитать об этом более подробно. Увы, учебную литературу не подскажу - как-то так получилось, что ничего, кроме стандарта и справочников, по "C" не читал  Расскажите, как в программе объявлен akk1, и почему он объявлен именно так.
|
|
|
|
|
Aug 14 2011, 14:58
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(aaarrr @ Aug 14 2011, 20:19)  Расскажите, как в программе объявлен 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;
Сообщение отредактировал дымок - Aug 14 2011, 15:03
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Aug 14 2011, 15:09
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(aaarrr @ Aug 14 2011, 21:03)  А volatile действительно нужен? (Сам факт использования объекта в прерывании не является безусловным к тому показанием.) Скорее всего я использую его на всякий случай, а что он может быть проблемой в моёи случае?
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Aug 14 2011, 15:30
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(aaarrr @ Aug 14 2011, 21:17)  Так он, собственно, и вызывает ругань в 42-х местах. Спасибо Вам, действительно volatile был всему виной.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Aug 15 2011, 16:49
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(Палыч @ Aug 15 2011, 22:26)  Из-за приоритета операций. В Вашем случае следует записывать (*cloc_prm)++ Спасибо!
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Aug 18 2011, 07:15
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(Павел_Б @ Aug 6 2011, 21:57)  Уважаемые форумчане, подскажите пожалуйста наиболее оптимальный вариант поиска последовательности нескольких байт. То есть есть последовательность байт, например ......0x05 0x51 0x12 0x64 0xC0 0x66 0x41.................................................. И вот мне нужно найти начало последовательности 0x64 0xC0 0x66 Как это сделать? Спасибо за внимание. Если нужен действительно наиболее оптимальный вариант, то это алгоритм Бойера-Мура
|
|
|
|
|
Aug 18 2011, 07:27
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(дымок @ Aug 13 2011, 19:31)  Забыл сказать что я использую 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
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Aug 18 2011, 15:42
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(MrYuran @ Aug 18 2011, 13:27)  Код 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; На эти битовые поля можно использовать указатели?
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
Aug 19 2011, 03:56
|
Местный
  
Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940

|
Цитата На эти битовые поля можно использовать указатели? Ни на какме битовые поля нельзя использовать указатели. Указатель содержит только адрес памяти. А на битовое поле необходимо еще его положение в байте и его длину. Где это все хранить? Код 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; Даже если мы корову назовем тигром, то она все равно не перестанет быть коровой и не начнет есть мясо!!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|