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

 
 
> C++ и массивы констант., А в чистом C работало ...
Terminator
сообщение Dec 9 2009, 07:49
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 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++?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Terminator
сообщение Dec 9 2009, 12:50
Сообщение #2


Местный
***

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



Код
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 - Dec 9 2009, 12:52
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Dec 9 2009, 12:55
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(Terminator @ Dec 9 2009, 16:50) *
[code][/code]


Ну ничего монстрообразного не вижу smile.gif
А массивы можно инициализировать так же как в С


Цитата(Terminator @ Dec 9 2009, 16:50) *
В реальном проекте в tUnion десяток разных типов ...


Тогда будте аккуратны с конструкторами (чтобы избежать неявного приведения типов)
Может имеет смысл объявить их explicit
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Terminator   C++ и массивы констант.   Dec 9 2009, 07:49
- - Methane   Цитата(Terminator @ Dec 9 2009, 09:49) Ес...   Dec 9 2009, 08:01
|- - Terminator   Цитата(Methane @ Dec 9 2009, 14:01) В плю...   Dec 9 2009, 08:07
|- - 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
|- - Dima_G   Цитата(Terminator @ Dec 9 2009, 12:07) Ну...   Dec 9 2009, 08:54
|- - jorikdima   Цитата(Dima_G @ Dec 9 2009, 11:54) Скольк...   Dec 9 2009, 09:00
|- - Dima_G   Цитата(jorikdima @ Dec 9 2009, 13:00) пре...   Dec 9 2009, 09:15
|- - 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
|- - Terminator   Цитата(Dima_G @ Dec 9 2009, 15:15) Те сто...   Dec 9 2009, 12:28
|- - 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   Цитата(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


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:04
Рейтинг@Mail.ru


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