[an error occurred while processing this directive]
|
Приветствую глубокоуважаемый All!
Проблема следующая: в коде понапиханы конструкции типа:
LOG("Foo() failed. Error:%d",cErr);
При этом LOG в общем случае
#define LOG printf
В частном - своя функция с множественными параметрами.
Собственно имеем проблему массового пожирания оперативки каждой такой строчкой.
Задача - сделать чтобы это все грузилось из флеша.
Но как - в упор не пойму.
Аргумент макроса - по определению автоматическая переменная.
Т.е. нельзя написать:
#define LOGF(string) \
{\
__flash char *str = string;\
LOG(str);\
}
Компилер ругается, что автоматическим переменным и параметрам функции эти спецификаторы прикручивать нельзя.
Ладно, пользуемся #pragma dataseg=CODE.
Компиляется, но внутри макроса работать не хочет (не понимает препроцессор, что эту прагму надо в макросе запихнуть.
Вопрос - у кого-нибудь есть идеи, что еще можно сделать? :-)