DimaG 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Никогда такого не видел. Хоть как называется? Это стандартная фича или расширение IAR? Вы про что? Про конструктор? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Вы про что? Про конструктор? Тю, я думал то С. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 (изменено) · Жалоба Те стоит задача запихнуть этот массив в ROM (например - во флешь)? Именно Этот код собирается прекрасно typedef struct sss ... Да ваш код нормально собирается. Подогнал свой под такой же вид(получается монстрообразно) тоже работает, за исключением массива info внутри tItem, как его инициализировать? P. S. компилятор GCC-4.4.2 Изменено 9 декабря, 2009 пользователем Terminator Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DimaG 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Подогнал свой под такой же вид(получается монстрообразно) тоже работает, за исключением массива info внутри tItem, как его инициализировать? Почему монстрообразно? Можете код привести? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 (изменено) · Жалоба 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 десяток разных типов ... Изменено 9 декабря, 2009 пользователем Terminator Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DimaG 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Ну ничего монстрообразного не вижу :) А массивы можно инициализировать так же как в С В реальном проекте в tUnion десяток разных типов ... Тогда будте аккуратны с конструкторами (чтобы избежать неявного приведения типов) Может имеет смысл объявить их explicit Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Terminator 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Ну ничего монстрообразного не вижу :) А массивы можно инициализировать так же как в С Действительно, если немного упростить то и массивы нормально укладываются. Про explicit можно подробней, что это даст? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Никогда такого не видел. Хоть как называется? Это стандартная фича или расширение IAR?Это конструктор С++. К Си не имеет отношения ИМХО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DimaG 0 9 декабря, 2009 Опубликовано 9 декабря, 2009 · Жалоба Про explicit можно подробней, что это даст? Погорячился) Смысла тут от этого не будет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kojevnikov 0 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба Вот так попробуй. 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} }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HARMHARM 0 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба {2, {1,2,4,2}, (float)1.5}, {1, {2,2,4,2}, (uint32_t)10}, Можно 1.5f и 10u. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться