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

 
 
> Можно ли в typedef struct описать массив переменной длины, IAR, C, AVR
west329_
сообщение Feb 20 2009, 09:52
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Есть некий протокол который пытаюсь описать структурой типа

Код
typedef struct TMainS
  {
    unsigned char   Start;
    unsigned long   Adata;
    unsigned int      Bdata;
    unsigned char   Cdata[var];
    unsigned int      Ddata;
    unsigned int      Edata;

  } T_MainS_Header;


Подскажите как в таких случаях поступат если, Cdata имеет переменную длину.

Перед присваиваем типов можно легко найти значение var.
Интересует доступ к полям Ddata и Edata, после присваивания типа MainS->Ddata или MainS->Edata.

Возможно ли такое решение, в книге по С такого ненашол, компилятор упорно ругается на Cdata, говорит что надо константа для var, и я с ним согласен, но есть ли другие решения ?

Сообщение отредактировал west329_ - Feb 20 2009, 09:57
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
west329_
сообщение Feb 23 2009, 06:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



CODE
/* - LIMITS.H -

Integral ANSI element sizes.

$Revision: 1.4 $

Copyright 1986 - 1999 IAR Systems. All rights reserved.
*/

#ifndef _LIMITS_INCLUDED
#define _LIMITS_INCLUDED

#ifndef _SYSTEM_BUILD
#pragma system_include
#endif

#include "sysmac.h"

#define CHAR_BIT 8 /* Number of bits in any "char" */

#if defined(__CHAR_MAX__)

#define CHAR_MAX __CHAR_MAX__
#define CHAR_MIN __CHAR_MIN__

#define MB_LEN_MAX 1 /* No of bytes in multibyte char */

#define SCHAR_MAX __SIGNED_CHAR_MAX__
#define SCHAR_MIN __SIGNED_CHAR_MIN__
#define UCHAR_MAX __UNSIGNED_CHAR_MAX__

#define SHRT_MAX __SIGNED_SHORT_MAX__
#define SHRT_MIN __SIGNED_SHORT_MIN__
#define USHRT_MAX __UNSIGNED_SHORT_MAX__

#define INT_MAX __SIGNED_INT_MAX__
#define INT_MIN __SIGNED_INT_MIN__
#define UINT_MAX __UNSIGNED_INT_MAX__

#define LONG_MAX __SIGNED_LONG_MAX__
#define LONG_MIN __SIGNED_LONG_MIN__
#define ULONG_MAX __UNSIGNED_LONG_MAX__

#else /* !defined(__CHAR_MAX__) */

#if _argt$(char)==1 /* "char" = "unsigned" "char" */
#define CHAR_MAX 255
#define CHAR_MIN 0
#else
#define CHAR_MAX 127 /* Maximum "char" value */
#define CHAR_MIN (-128) /* Mimimum "char" value */
#endif

#define MB_LEN_MAX 1 /* No of bytes in multibyte char */

#define SCHAR_MAX 127 /* Maximum "signed" "char" value */
#define SCHAR_MIN (-128) /* Minimum "signed" "char" value */

#define UCHAR_MAX 255 /* Maximum "unsigned" "char" value */

#define SHRT_MAX 32767 /* Maximum ("signed") "short" value */
#define SHRT_MIN (-32767-1) /* Minimum ("signed") "short" value */
#define USHRT_MAX 0xFFFFU /* Maximum "unsigned" "short" value */

#if __INT_SIZE__ == 2 /* For 32-bit CPU's usually not */
#define INT_MAX 32767 /* Maximum ("signed") "int" value */
#define INT_MIN (-32767-1) /* Minimum ("signed") "int" value */
#define UINT_MAX 0xFFFFU /* Maximum "unsigned" "int" value */
#else
#define INT_MAX 2147483647
#define INT_MIN (-2147483647-1)
#define UINT_MAX 0xFFFFFFFFU
#endif

#define LONG_MAX 2147483647 /* Maximum ("signed") "long" value */
#define LONG_MIN (-2147483647-1) /* Minimum ("signed") "long" value */
#define ULONG_MAX 0xFFFFFFFFU /* Maximum "unsigned" "long" value */

#endif /* defined(__CHAR_MAX__) */

#endif


Выходит, что unsigned chort, что unsigned int одинаково в данном случае.
Причина редактирования: Уменьшение видимого размера цитаты исходника.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- west329_   Можно ли в typedef struct описать массив переменной длины   Feb 20 2009, 09:52
- - ARV   Cdata делайте указателем, не забывая выделять памя...   Feb 20 2009, 09:58
- - sergeeff   Цитата(west329_ @ Feb 20 2009, 13:52) Под...   Feb 20 2009, 10:04
- - Сергей Борщ   Цитата(west329_ @ Feb 20 2009, 11:52) Под...   Feb 20 2009, 11:01
|- - rezident   Цитата(Сергей Борщ @ Feb 20 2009, 16:01) ...   Feb 20 2009, 14:06
|- - Сергей Борщ   Цитата(rezident @ Feb 20 2009, 16:06) а в...   Feb 20 2009, 19:12
- - west329_   Благодар за подсказку. Понятно как действовать дал...   Feb 20 2009, 11:54
- - Rst7   Чисто с прагматической точки зрения я бы положил в...   Feb 20 2009, 19:32
- - west329_   Если забирать данные с Cdata через указатель, како...   Feb 21 2009, 08:25
|- - demiurg_spb   Цитата(west329_ @ Feb 21 2009, 11:25) Есл...   Feb 21 2009, 10:01
|- - sergeeff   Цитата(west329_ @ Feb 21 2009, 12:25) Есл...   Feb 21 2009, 16:59
|- - demiurg_spb   Цитата(sergeeff @ Feb 21 2009, 19:59) Ука...   Feb 21 2009, 17:35
- - Rst7   ЦитатаПо стандарту на язык СИ "размерность...   Feb 21 2009, 17:57
|- - zltigo   Цитата(Rst7 @ Feb 21 2009, 20:57) До появ...   Feb 22 2009, 06:52
|- - sergeeff   Цитата(Rst7 @ Feb 21 2009, 21:57) Да, так...   Feb 22 2009, 11:55
- - Rst7   Цитатав том-же реалмоде x86 Ну да. Правда, самый ...   Feb 22 2009, 07:26
|- - demiurg_spb   Да и на x51 была возможность косвенной адресации ч...   Feb 22 2009, 08:32
|- - ReAl   Цитата(demiurg_spb @ Feb 22 2009, 10:32) ...   Feb 22 2009, 20:51
|- - demiurg_spb   Цитата(ReAl @ Feb 22 2009, 23:51) Просто ...   Feb 22 2009, 21:22
|- - ReAl   Цитата(demiurg_spb @ Feb 22 2009, 23:22) ...   Feb 22 2009, 21:39
|- - demiurg_spb   Цитата(ReAl @ Feb 23 2009, 00:39) Не поня...   Feb 23 2009, 08:19
|- - west329_   Цитата(demiurg_spb @ Feb 23 2009, 11:19) ...   Feb 23 2009, 11:36
|- - sergeeff   Цитата(west329_ @ Feb 23 2009, 14:36) а у...   Feb 23 2009, 11:48
||- - demiurg_spb   Цитата(sergeeff @ Feb 23 2009, 14:48) А а...   Feb 23 2009, 20:34
|- - Сергей Борщ   Цитата(west329_ @ Feb 23 2009, 13:36) а у...   Feb 23 2009, 12:01
- - Rst7   ЦитатаРазность между двумя указателями - ptrdiff_t...   Feb 22 2009, 12:04
- - west329_   Незнал, чесно признаюсь думал, что это описывается...   Feb 23 2009, 12:21
|- - sergeeff   Цитата(west329_ @ Feb 23 2009, 15:21) Нез...   Feb 23 2009, 12:33
- - west329_   ..Указатель — это переменная, значением кото...   Feb 23 2009, 13:40
|- - sergeeff   Цитата(west329_ @ Feb 23 2009, 16:40) ..У...   Feb 23 2009, 15:05
- - sergeeff   Очень жаль, если у вас до сих пор нет понимания ра...   Feb 24 2009, 07:33
|- - demiurg_spb   Цитата(sergeeff @ Feb 24 2009, 10:33) Оче...   Feb 24 2009, 07:42
- - sergeeff   Типун вам на язык и долгих лет жизни. В двоичной...   Feb 24 2009, 09:21
|- - demiurg_spb   Цитата(sergeeff @ Feb 24 2009, 12:21) Тип...   Feb 24 2009, 09:38
- - sergeeff   Цитатаэто уже надо задуматься Задумываться - поле...   Feb 24 2009, 09:53
- - west329_   Подскажите как правильно поступить, хочу использов...   Feb 24 2009, 10:04
|- - demiurg_spb   Цитата(west329_ @ Feb 24 2009, 13:04) Обь...   Feb 24 2009, 10:38
- - west329_   В чем тогда отличие unsigned char от char сори, п...   Feb 24 2009, 10:48
|- - MrYuran   Цитата(west329_ @ Feb 24 2009, 13:48) В ч...   Feb 24 2009, 10:55
|- - demiurg_spb   Цитата(west329_ @ Feb 24 2009, 13:48) ......   Feb 24 2009, 11:09
|- - zltigo   Цитата(west329_ @ Feb 24 2009, 13:48) а т...   Feb 24 2009, 11:12
||- - demiurg_spb   Цитата(zltigo @ Feb 24 2009, 14:12) Ну и ...   Feb 24 2009, 11:24
|||- - zltigo   Цитата(demiurg_spb @ Feb 24 2009, 14:24) ...   Feb 24 2009, 12:08
|||- - demiurg_spb   Цитата(zltigo @ Feb 24 2009, 15:08) Вроде...   Feb 24 2009, 12:34
|||- - gotty   Цитата(demiurg_spb @ Feb 24 2009, 14:34) ...   Feb 24 2009, 12:50
|||- - zltigo   Цитата(gotty @ Feb 24 2009, 15:50) Тут от...   Feb 24 2009, 13:20
|||- - demiurg_spb   Цитата(gotty @ Feb 24 2009, 15:50) Тут от...   Feb 24 2009, 13:38
||- - Сергей Борщ   Цитата(zltigo @ Feb 24 2009, 13:12) Ну и ...   Feb 24 2009, 12:24
|- - xemul   Цитата(west329_ @ Feb 24 2009, 13:48) Код...   Feb 24 2009, 11:21
- - west329_   Код__flash char *test_ = "hello"; __fla...   Feb 24 2009, 11:38
|- - gotty   Цитата(west329_ @ Feb 24 2009, 13:38) Код...   Feb 24 2009, 11:41
|- - demiurg_spb   Цитата(west329_ @ Feb 24 2009, 14:38) [co...   Feb 24 2009, 11:42
|- - gotty   Цитата(demiurg_spb @ Feb 24 2009, 13:42) ...   Feb 24 2009, 11:47
|- - demiurg_spb   Я через минуту раздумий удалил этот пример. Вы опе...   Feb 24 2009, 11:49
- - west329_   Цель сделать поиск в буфере строки которая сидит в...   Feb 24 2009, 12:05
|- - demiurg_spb   Цитата(west329_ @ Feb 24 2009, 15:05) Цел...   Feb 24 2009, 12:07
- - west329_   Код__flash char test_[] = "hello...   Feb 24 2009, 14:14
|- - demiurg_spb   Цитата(west329_ @ Feb 24 2009, 17:14) Это...   Feb 24 2009, 14:22
- - west329_   Код__x_z int strcatstrncmpstrncmp(const void *...   Feb 25 2009, 06:12
|- - demiurg_spb   Цитата(west329_ @ Feb 25 2009, 09:12) Ана...   Feb 25 2009, 08:05
- - west329_   Всё работает как надо, благодарю за помощь. За рад...   Feb 25 2009, 10:20
|- - gotty   Цитата(west329_ @ Feb 25 2009, 12:20) Код...   Feb 25 2009, 10:53
|- - demiurg_spb   Цитата(west329_ @ Feb 25 2009, 13:20) Всё...   Feb 25 2009, 11:06
- - A. Fig Lee   то, что возвращает malloc() правильные пацаны пров...   Feb 26 2009, 02:10


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

 


RSS Текстовая версия Сейчас: 1st August 2025 - 17:39
Рейтинг@Mail.ru


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