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

 
 
> Как стандартно в Си узнать размер char-а, А соответственно и функции sizeof()
GetSmart
сообщение Aug 20 2009, 17:24
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



А напишу-ка я здесь. Прикинусь начинающим.

Столкнулся работая с TMS320 с тем, что у него тип char имеет 2 байта. И (кто бы мог подумать) sizeof() выдаёт размеры переменных тоже в 16 битных словах.
Вопрос: как стандартными методами преобразовать этот размер в байтовый размер, то бишь метод должен одинаково работать на всех платформах, и там где sizeof() байтовый.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Aug 21 2009, 05:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SM @ Aug 21 2009, 09:09) *
так что все в норме, никто не говорил, что он 8 бит.

Да. "Вариантов нормы" только много получается smile.gif

Цитата(GetSmart @ Aug 21 2009, 09:27) *
А вот это я вообще не понял. Чего немного?

Дескрипторов немного, поэтому не жалко использовать половинку от char'а на каждый байт.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 21 2009, 06:04
Сообщение #3


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(aaarrr @ Aug 21 2009, 11:43) *
Дескрипторов немного, поэтому не жалко использовать половинку от char'а на каждый байт.

До сих пор не понял.
Код
USB_postTransaction(&EP2_OUT, size, buf, USB_IOFLAG_NOSHORT);

тут size передаётся в "железных" USB-байтах, а buf - указатель на буфер, из которого будет извлечено 100% бит, то есть если это char[10], то оттуда передастся 20 "железных" USB-байт.

Сообщение отредактировал GetSmart - Aug 21 2009, 06:11


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 21 2009, 10:23
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(GetSmart @ Aug 21 2009, 09:04) *
тут size передаётся в "железных" USB-байтах
А Вы говорите "октет", как в сетях принято :-)
Именно потому, что байты - они всякие бывают.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Aug 21 2009, 10:31
Сообщение #5


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(ReAl @ Aug 21 2009, 16:23) *
А Вы говорите "октет", как в сетях принято :-)
Именно потому, что байты - они всякие бывают.

Цитата(http://en.wikipedia.org/wiki/Byte)
The popularity of IBM's System/360 architecture starting in the 1960s and the explosion of microcomputers based on 8-bit microprocessors in the 1980s has made eight bits by far the most common size for a byte. The term octet is widely used as a more precise synonym where ambiguity is undesirable (for example, in protocol definitions).

Ну да, исхитрились. Хотя в русской литературе везде байтом считается 8 бит без каких-либо оговорок.

Даже в доке от TI
Цитата(spru587e.pdf @ page 28)
Byte = An 8-bit value. A byte is the smallest unit of data transferred in a DMA channel.


Сообщение отредактировал GetSmart - Aug 21 2009, 10:35


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- GetSmart   Как стандартно в Си узнать размер char-а   Aug 20 2009, 17:24
- - Axel   Я бы сделал так: #ifdef TMS320 #define SIZE_OF_CH...   Aug 20 2009, 19:40
- - ReAl   Цитата(GetSmart @ Aug 20 2009, 20:24) Воп...   Aug 20 2009, 20:33
|- - aaarrr   Цитата(ReAl @ Aug 21 2009, 00:33) Код#def...   Aug 20 2009, 22:30
|- - GetSmart   Цитата(aaarrr @ Aug 21 2009, 04:30) Справ...   Aug 21 2009, 03:59
|- - aaarrr   Цитата(GetSmart @ Aug 21 2009, 07:59) Мне...   Aug 21 2009, 04:05
|- - dxp   Цитата(GetSmart @ Aug 21 2009, 10:59) Мне...   Aug 21 2009, 04:13
|- - SM   Цитата(dxp @ Aug 21 2009, 08:13) другими ...   Aug 21 2009, 04:22
||- - dxp   Цитата(SM @ Aug 21 2009, 11:22) На этом T...   Aug 21 2009, 12:33
||- - SM   Цитата(dxp @ Aug 21 2009, 16:33) А по ско...   Aug 21 2009, 12:49
||- - defunct   Цитата(SM @ Aug 21 2009, 15:49) Т.е. если...   Aug 21 2009, 16:46
||- - GetSmart   Цитата(defunct @ Aug 21 2009, 22:46) В об...   Aug 21 2009, 16:52
||- - defunct   Цитата(GetSmart @ Aug 21 2009, 19:52) Щас...   Aug 21 2009, 17:01
||- - SM   Цитата(defunct @ Aug 21 2009, 21:01) Ну о...   Aug 21 2009, 17:32
||- - GetSmart   Цитата(defunct @ Aug 21 2009, 23:01) Ну о...   Aug 21 2009, 18:25
|- - aaarrr   Цитата(dxp @ Aug 21 2009, 08:13) А char м...   Aug 21 2009, 04:39
||- - GetSmart   Цитата(aaarrr @ Aug 21 2009, 10:39) Тогда...   Aug 21 2009, 04:54
||- - SM   Цитата(GetSmart @ Aug 21 2009, 08:54) И с...   Aug 21 2009, 05:09
||- - GetSmart   Цитата(SM @ Aug 21 2009, 11:09) так что в...   Aug 21 2009, 05:27
|- - Andron_   Цитата(dxp @ Aug 21 2009, 11:13) Наскольк...   Sep 9 2009, 15:52
- - aaarrr   Ну, тогда вполне подходит способ, предложенный Rea...   Aug 21 2009, 05:00
|- - aaarrr   Цитата(GetSmart @ Aug 21 2009, 10:04) До ...   Aug 21 2009, 07:09
|- - aaarrr   Цитата(ReAl @ Aug 21 2009, 14:23) А Вы го...   Aug 21 2009, 10:29
- - aaarrr   Ну а в C99 написано: Цитата3.6 1 byte addressable ...   Sep 9 2009, 15:57


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 18:28
Рейтинг@Mail.ru


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