Перейти к содержанию
    

C++ и массивы констант.

Никогда такого не видел. Хоть как называется? Это стандартная фича или расширение IAR?

Вы про что? Про конструктор?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы про что? Про конструктор?

Тю, я думал то С.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Те стоит задача запихнуть этот массив в ROM (например - во флешь)?

Именно

 

Этот код собирается прекрасно

 

typedef struct sss
      ...

 

Да ваш код нормально собирается.

 

Подогнал свой под такой же вид(получается монстрообразно) тоже работает, за исключением массива info внутри tItem, как его инициализировать?

 

P. S. компилятор GCC-4.4.2

Изменено пользователем Terminator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подогнал свой под такой же вид(получается монстрообразно) тоже работает, за исключением массива info внутри tItem, как его инициализировать?

 

Почему монстрообразно? Можете код привести?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

union tUnion {
        int p;
        float f;
        tUnion(double t): f(t) {}
        tUnion(int t): p(t) {}
};

struct tItem {
        const uint8_t type;
        const float info;
        tUnion u;
        tItem(const int t, const double in, int p): type(t), info(in), u(p) {};
        tItem(const int t, const double in, double p): type(t), info(in), u(p) {};
};

const tItem Item[]= {
    {tItem(1, 2.1, 1)},
    {tItem(23, 1.2, 3.2)}
};

 

В реальном проекте в tUnion десяток разных типов ...

Изменено пользователем Terminator

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты


 

Ну ничего монстрообразного не вижу :)

А массивы можно инициализировать так же как в С

 

 

В реальном проекте в tUnion десяток разных типов ...

 

Тогда будте аккуратны с конструкторами (чтобы избежать неявного приведения типов)

Может имеет смысл объявить их explicit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну ничего монстрообразного не вижу :)

А массивы можно инициализировать так же как в С

 

Действительно, если немного упростить то и массивы нормально укладываются.

 

Про explicit можно подробней, что это даст?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никогда такого не видел. Хоть как называется? Это стандартная фича или расширение IAR?
Это конструктор С++. К Си не имеет отношения ИМХО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про explicit можно подробней, что это даст?

 

Погорячился)

Смысла тут от этого не будет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот так попробуй.

typedef unsigned char uint8_t;
typedef unsigned long uint32_t;

union tUnionDat {
         uint32_t p;
         float f;
         tUnionDat(float a)
         {
            f = a;
         }
         tUnionDat(uint32_t a)
         {
             p = a;
         }
};

typedef struct {
         uint8_t type;
         uint8_t info[4];
         tUnionDat u;
} tItem;

const tItem Item[] = {
         {2, {1,2,4,2}, (float)1.5},
         {1, {2,2,4,2}, (uint32_t)10},
         {2, {3,2,4,2}, (float)2.3}
};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

         {2, {1,2,4,2}, (float)1.5},
         {1, {2,2,4,2}, (uint32_t)10},

Можно 1.5f и 10u.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...