|
C++ и массивы констант., А в чистом C работало ... |
|
|
|
Dec 9 2009, 07:49
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Есть следующий код: Код typedef union { uint32_t p; float f; } tUnion; typedef struct { uint8_t type; uint8_t info[4]; tUnion u; } tItem; const tItem i[] = { {2, {1,2,4,2}, .u.f=1.5}, {1, {2,2,4,2}, .u.p=10}, {2, {3,2,4,2}, .u.f=2.3} }; В чистом C замечательно компилируется и работает. А вот как написать подобное в C++?
|
|
|
|
|
 |
Ответов
|
Dec 9 2009, 09:15
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(jorikdima @ Dec 9 2009, 13:00)  предполагаю РАМ ибо сущность tItem i[] = уже не сможет быть константой. Те стоит задача запихнуть этот массив в ROM (например - во флешь)? Цитата(jorikdima @ Dec 9 2009, 13:00)  предполагаю РАМ ибо сущность tItem i[] = уже не сможет быть константой. Кстати, почему? Этот код собирается прекрасно Код typedef struct sss { BYTE a; BYTE b; sss(BYTE bA_, BYTE bB_):a(bA_),b(bB_){} };
static const sss sSss_ = sss(1,2); static const sss asSSS_[] = {sss(1,2),sss(3,4),sss(5,6)};
|
|
|
|
|
Dec 9 2009, 12:28
|

Местный
  
Группа: Участник
Сообщений: 209
Регистрация: 7-12-04
Из: Томск
Пользователь №: 1 382

|
Цитата(Dima_G @ Dec 9 2009, 15:15)  Те стоит задача запихнуть этот массив в ROM (например - во флешь)? Именно Цитата(Dima_G @ Dec 9 2009, 15:15)  Этот код собирается прекрасно Код typedef struct sss ... Да ваш код нормально собирается. Подогнал свой под такой же вид(получается монстрообразно) тоже работает, за исключением массива info внутри tItem, как его инициализировать? P. S. компилятор GCC-4.4.2
Сообщение отредактировал Terminator - Dec 9 2009, 12:33
|
|
|
|
Сообщений в этой теме
Terminator C++ и массивы констант. Dec 9 2009, 07:49  Methane Цитата(Terminator @ Dec 9 2009, 10:07) Ну... Dec 9 2009, 08:13   VladimirYU Кодstruct TItem
{
..........
};
const TItem Item
... Dec 9 2009, 08:29    Terminator Цитата(VladimirYU @ Dec 9 2009, 14:29) Ко... Dec 9 2009, 08:52     Methane Цитата(Terminator @ Dec 9 2009, 10:50) А ... Dec 9 2009, 08:53     Methane Цитата(Dima_G @ Dec 9 2009, 11:15) sss(BY... Dec 9 2009, 09:50      Dima_G Цитата(Methane @ Dec 9 2009, 12:50) Никог... Dec 9 2009, 10:04       Methane Цитата(Dima_G @ Dec 9 2009, 12:04) Вы про... Dec 9 2009, 11:22      demiurg_spb Цитата(Methane @ Dec 9 2009, 12:50) Никог... Dec 9 2009, 16:09      Dima_G Цитата(Terminator @ Dec 9 2009, 16:28) По... Dec 9 2009, 12:41 Terminator без .u.f оно приводит к типу первого элемента unio... Dec 9 2009, 08:18 Methane Цитата(Terminator @ Dec 9 2009, 10:18) бе... Dec 9 2009, 08:37 jorikdima Создайте отдельный модуль и компилируйте его и тол... Dec 9 2009, 08:49 LessNik Вообще-то и первоначальный код прекрасно собрался.... Dec 9 2009, 09:51 Terminator Кодunion tUnion {
int p;
float f;
tUnion... Dec 9 2009, 12:50 Dima_G Цитата(Terminator @ Dec 9 2009, 16:50) [c... Dec 9 2009, 12:55  Terminator Цитата(Dima_G @ Dec 9 2009, 18:55) Ну нич... Dec 9 2009, 13:14   Dima_G Цитата(Terminator @ Dec 9 2009, 17:14) Пр... Dec 9 2009, 16:14 alekseykoj Вот так попробуй.
Кодtypedef unsigned char uint8_t... Dec 17 2009, 07:00 HARMHARM Цитата(alekseykoj @ Dec 17 2009, 09:00) К... Dec 17 2009, 07:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|