Код
template <typename T,int TCOUNT>
class THwFIFO
{
private:
static T buff[TCOUNT];
volatile uint32_t size;
T first;
T last;
public:
...
}
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];
T THwFIFO<T,FSIZE>::buff[FSIZE];
Все работает, но теперь нужно buff положить в специальную секцию и тут засада
Код
#pragma location = ".not_cached"
template <typename T, int FSIZE>
T THwFIFO<T,FSIZE>::buff[FSIZE];
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]"
detected during implicit definition of "char THwFIFO<T, FSIZE>::buff[100] [with T=char, FSIZE=100]"
Естественно данные не попали в секцию.
Если сделать класс не шаблонным, то прагма работает на статические данные класса.
Как можно выкрутиться из этой ситуации ?