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

 
 
> опять volatile
ПАВ
сообщение Feb 9 2007, 22:46
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 3-05-06
Пользователь №: 16 721



файл xxx.h
typedef struct {
unsigned char Isto;
...
} TDataLbk;
Прошу помочь. Пишется прога, состоящая из нескольких модулей.

файл xxx.c
#include "xxx.h"
volatile TDataLbk DataLbk;
Именно здесь проводится заполнение этой структуры. volatile в xxx.c необходим для корректного проведения оптимизации, без неё компилятор выбрасывает DataLbk из конечного кода в файле main.c

файл main.c
#include <string.h>
#include "xxx.h"
extern volatile TDataLbk DataLbk;
DataLbk.Isto = 0x00; //без volatile компилятор выбрасывает эти действия
memmove(&Obmen[chanl].Out.Data[4], &DataLbk, sizeof(TDataLbk));
На этой строке компилятор выдает ошибку:
Error[Pe167]: argument of type "TDataLbk volatile *" is incompatible with parameter of type "void const *"

Вопросов два:
1. Как бороться с этой ошибкой.
2. какая из фу-ий memmov() или memcpy() быстрее в данной ситуации?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ПАВ
сообщение Feb 10 2007, 10:38
Сообщение #2





Группа: Новичок
Сообщений: 11
Регистрация: 3-05-06
Пользователь №: 16 721



Естественно здесь приведен не весь код, а лишь упрощенный фрагмент, показывающий суть проблемы. В main.c естествееноя я не обнуляю переменные на старте, но произвожу с ними (практически со всеми полями структуры DataLbk) минимальные действия, результат - при оптимизации эти строки выбрасываются (компилятор не понимает, что за счет этого ветвится алгоритм в других модулях) при отсутствии в объявлении volatile.
Явное преобразование типов не проходит (хотя не понятно в какой тип преобразовывать, протатип объявлен как: void *memmove(void *s1, const void *s2, size_t n)wink.gif
Насчет функций memmove(..) и memcpy(..) вопрос заключается в скорости работы этих функция конкретно для IAR, а не в том что они делают (это можно прочитать в help-е)
За участие спасибо!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ПАВ   опять volatile   Feb 9 2007, 22:46
- - rezident   Я не большой спец, но с IAR немного работал. За...   Feb 10 2007, 01:42
|- - zltigo   Цитата(ПАВ @ Feb 10 2007, 09:38) Насчет ф...   Feb 10 2007, 13:47
- - rezident   Если нужно просто проинициализировать структуру, т...   Feb 10 2007, 17:56
- - ПАВ   Прошу прощения за некорректную постановку вопроса....   Feb 11 2007, 00:15
|- - rezident   Цитата(ПАВ @ Feb 11 2007, 02:15) Вопрос: ...   Feb 11 2007, 01:00
|- - Сергей Борщ   Цитата(ПАВ @ Feb 10 2007, 23:15) То же са...   Feb 11 2007, 01:12
- - ПАВ   ЦитатаПо поводу ошибки. Если внимательно рассмотре...   Feb 11 2007, 10:23
- - Oldring   Цитата(ПАВ @ Feb 9 2007, 22:46) DataLbk.I...   Feb 11 2007, 11:59
- - ПАВ   Цитата(ПАВ @ Feb 9 2007, 22:46) DataLbk.Isto = 0...   Feb 11 2007, 18:30
|- - rezident   Цитата(ПАВ @ Feb 11 2007, 20:30) ЦитатаНе...   Feb 11 2007, 21:06
- - ПАВ   ЦитатаДык вы до сих пор не попробовали? Попробуйт...   Feb 11 2007, 22:41
|- - singlskv   Цитата(ПАВ @ Feb 11 2007, 22:41) ЦитатаДы...   Feb 12 2007, 00:13
- - ПАВ   ЦитатаЕсли Вам нужен действительно быстрый код, то...   Feb 14 2007, 22:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 03:25
Рейтинг@Mail.ru


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