Цитата(ПАВ @ Feb 11 2007, 02:15)

Вопрос: как с этим бороться? Недопонимаю я суть volatile!
Суть квалификатора
volatile в том, что он описывает переменную, которая может меняться вне данной конкретной функции или модуля. Например, в процедуре прерывания, вызов которой недетерменирован во времени. При операциях с переменной описанной как
volatile компилятору запрещается использовать ее локальные копии. Т.е. компилятор обязан считывать каждый раз значение переменной с квалификатором
volatile, несмотря на частоту использования ее в данной функции.
По поводу ошибки. Если внимательно рассмотреть прототип функций memspy и memmov, то можно заметить, что указатель на источник данных описан как указатель на область данных константного типа (
const void *src). Таким образом во время выполнения указанных функций гарантируется что источник данных
не может быть модифицирован. Квалификатор
volatile противоречит этому условия, указывая на то, что источник данных
может быть модифицирован в любое время и в т.ч. во время выполнения функций memspy/memmov. Поэтому компилятор вполне справедливо выдает сообщение об ошибке.
P.S. Кстати, а явное приведение типов не прокатывает что ли?
P.P.S. вот уж не думал, что даже с моими любительскими познаниями в Си можно уже читать лекции