реклама на сайте
подробности

 
 
5 страниц V  « < 2 3 4 5 >  
Reply to this topicStart new topic
> Вопрос по си
aaarrr
сообщение Aug 14 2011, 12:25
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(дымок @ Aug 14 2011, 14:18) *
Спасибо Вам за профессиональный "костыль". Просто у меня в программе около около десятка таких функций с подобными аргументами, потому и столько предупреждений.

Не должны потери квалификаторов измеряться десятками - скорее всего, это означает, что применены они не по делу.
Go to the top of the page
 
+Quote Post
Smoky
сообщение Aug 14 2011, 13:50
Сообщение #47


Местный
***

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



Цитата(aaarrr @ Aug 14 2011, 18:25) *
Не должны потери квалификаторов измеряться десятками - скорее всего, это означает, что применены они не по делу.


Я электронщик, программированием был вынужден заняться ибо без микроконтроллеров никуда. Отношу себя к начинающим, С изучал по учебному пособию Бредли Л.Джонса и Питера Эйткена. О передаче в функции адресов переменных в качестве аргументов описано весьма кратко. Если можно, укажите где можно почитать об этом более подробно. Спасибо.


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 14 2011, 14:19
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(_Pasha @ Aug 13 2011, 19:38) *
&akk1.ucon имеет тип void *

Откуда вдруг void *?

Цитата(дымок @ Aug 14 2011, 17:50) *
О передаче в функции адресов переменных в качестве аргументов описано весьма кратко. Если можно, укажите где можно почитать об этом более подробно.

Увы, учебную литературу не подскажу - как-то так получилось, что ничего, кроме стандарта и справочников, по "C" не читал sad.gif

Расскажите, как в программе объявлен akk1, и почему он объявлен именно так.
Go to the top of the page
 
+Quote Post
Smoky
сообщение Aug 14 2011, 14:58
Сообщение #49


Местный
***

Группа: Свой
Сообщений: 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


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 14 2011, 15:03
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



А volatile действительно нужен? (Сам факт использования объекта в прерывании не является безусловным к тому показанием.)
Go to the top of the page
 
+Quote Post
Smoky
сообщение Aug 14 2011, 15:09
Сообщение #51


Местный
***

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



Цитата(aaarrr @ Aug 14 2011, 21:03) *
А volatile действительно нужен? (Сам факт использования объекта в прерывании не является безусловным к тому показанием.)


Скорее всего я использую его на всякий случай, а что он может быть проблемой в моёи случае?


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 14 2011, 15:17
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Так он, собственно, и вызывает ругань в 42-х местах.
Go to the top of the page
 
+Quote Post
Smoky
сообщение Aug 14 2011, 15:30
Сообщение #53


Местный
***

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



Цитата(aaarrr @ Aug 14 2011, 21:17) *
Так он, собственно, и вызывает ругань в 42-х местах.


Спасибо Вам, действительно volatile был всему виной.


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
Smoky
сообщение Aug 15 2011, 16:11
Сообщение #54


Местный
***

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



Очень прошу дать ответ на следующий вопрос, почему компилятор в WinAVR ругается на выражение типа: *cloc_prm++;
Однако при просмотре примеров других программ используются именно такие выражения.
Потому мне приходится использовать: *cloc_prm=*cloc_prm+1; в таком виде выражение принимается без проблем.


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 15 2011, 16:26
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Из-за приоритета операций. В Вашем случае следует записывать (*cloc_prm)++
Go to the top of the page
 
+Quote Post
Smoky
сообщение Aug 15 2011, 16:49
Сообщение #56


Местный
***

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



Цитата(Палыч @ Aug 15 2011, 22:26) *
Из-за приоритета операций. В Вашем случае следует записывать (*cloc_prm)++


Спасибо!


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
777777
сообщение Aug 18 2011, 07:15
Сообщение #57


Профессионал
*****

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



Цитата(Павел_Б @ Aug 6 2011, 21:57) *
Уважаемые форумчане, подскажите пожалуйста наиболее оптимальный вариант поиска последовательности нескольких байт.
То есть есть последовательность байт, например
......0x05 0x51 0x12 0x64 0xC0 0x66 0x41..................................................

И вот мне нужно найти начало последовательности 0x64 0xC0 0x66
Как это сделать? smile3046.gif
Спасибо за внимание.


Если нужен действительно наиболее оптимальный вариант, то это алгоритм Бойера-Мура
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 18 2011, 07:27
Сообщение #58


Беспросветный оптимист
******

Группа: Свой
Сообщений: 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 =)
Go to the top of the page
 
+Quote Post
Smoky
сообщение Aug 18 2011, 15:42
Сообщение #59


Местный
***

Группа: Свой
Сообщений: 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;


На эти битовые поля можно использовать указатели?


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Aug 19 2011, 03:56
Сообщение #60


Местный
***

Группа: Участник
Сообщений: 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;


Даже если мы корову назовем тигром, то она все равно не перестанет быть коровой и не начнет есть мясо!!
Go to the top of the page
 
+Quote Post

5 страниц V  « < 2 3 4 5 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01489 секунд с 7
ELECTRONIX ©2004-2016