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

 
 
> IAR C++
MALLOY2
сообщение Oct 24 2010, 19:27
Сообщение #1


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Есть шаблонный класс FIFO для периферии его отличия от обычного в том что буфер статический.

Код
template <typename T,int TCOUNT>
class THwFIFO
{
private:
  static T buff[TCOUNT];
  volatile uint32_t size;
  T first;
  T last;
public:
...
}


Дальше объявляем переменные
Код
template <typename T, int FSIZE>
T THwFIFO<T,FSIZE>::buff[FSIZE];


Все работает, но теперь нужно buff положить в специальную секцию и тут засада

Код
#pragma location = ".not_cached"
template <typename T, int FSIZE>
T THwFIFO<T,FSIZE>::buff[FSIZE];


На что получил
Цитата
Warning[Pe609]: this kind of pragma may not be used here C:\Temp\1\main.cpp 16
detected during implicit definition of "char THwFIFO<T, FSIZE>::buff[100] [with T=char, FSIZE=100]"

Естественно данные не попали в секцию.

Если сделать класс не шаблонным, то прагма работает на статические данные класса.
Как можно выкрутиться из этой ситуации ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
neiver
сообщение Oct 25 2010, 06:51
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Видимо это такое ограничение #pragma location в IAR, которая не дружит с шаблонами.
Как вариант, можно объявить буффер вне шаблона и передавать в шаблон указатель на него (хотя, это неудобное решение).

В GCC __attribute__ ((section ("<section name>"))) в подобном случае с шаблонами работает корректно.
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 25 2010, 09:53
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(neiver @ Oct 25 2010, 13:51) *
Видимо это такое ограничение #pragma location в IAR, которая не дружит с шаблонами.
Как вариант, можно объявить буффер вне шаблона и передавать в шаблон указатель на него (хотя, это неудобное решение).

Да, указатель неудобно. А что по поводу ссылки?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


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


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