Re: Платформо-независимые типы в ANSI C.
On 2012-10-07, yuri.nefe...@gmail.com wrote: On Sun, 7 Oct 2012, Dmitrii Kashin wrote: Я слышал, что существуют типы, однозначно определяющие количество бит в объявляемой сущности (типа uint32), но не смог найти, где они определяются. stdint.h А вообще очень полезный ресурс - wikipedia ) https://en.wikipedia.org/wiki/C_data_types А еще полезней: http://www.open-std.org/jtc1/sc22/wg14/ откуда вытягивается PDF файл: http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf и далее поиск по документы... В общем, я пишу структуры для сетевого взаимодействия двух машин, одна из которых 32х-разрядная, а другая - 64х-разрядная. Мне нужно, чтобы структуры выглядели побитово одинакого на обеих платформах. У меня возник встречный вопрос, POSIX определяет 4 функции в вариантах 16-/32-бит: http://pubs.opengroup.org/onlinepubs/9699919799/functions/htonl.html htonl, htons, ntohl, ntohs - convert values between host and network byte order А как быть с 64-битами? Или в сетевом стеке нет полей с 64-битами...? -- Best regards! -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87zk3vixem@gavenkoa.example.com
Re: Платформо-независимые типы в ANSI C.
On Tue, Oct 09, 2012 at 04:32:17PM +0300, Oleksandr Gavenko wrote: У меня возник встречный вопрос, POSIX определяет 4 функции в вариантах 16-/32-бит: http://pubs.opengroup.org/onlinepubs/9699919799/functions/htonl.html htonl, htons, ntohl, ntohs - convert values between host and network byte order А как быть с 64-битами? Или в сетевом стеке нет полей с 64-битами...? Да, полей с 64 битами в сетях нет. :))) Когда люди доросли до 64 бит, они уже избавились от детских глупостей вокруг byte ordering. К тому времени как раз вымерли последние компьютеры с не-8-битными байтами и/или байтами переменной длины, так что сейчас никого уже не волнуют проблемы упаковки 36 или 48 бит. Что не мешает изернету работать с 48-битным mac-адресом. -- Eugene Berdnikov -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20121009141004.ga2...@sie.protva.ru
Re: Платформо-независимые типы в ANSI C.
On Tue, 9 Oct 2012, Oleksandr Gavenko wrote: On 2012-10-07, yuri.nefe...@gmail.com wrote: On Sun, 7 Oct 2012, Dmitrii Kashin wrote: Я слышал, что существуют типы, однозначно определяющие количество бит в объявляемой сущности (типа uint32), но не смог найти, где они определяются. stdint.h А вообще очень полезный ресурс - wikipedia ) https://en.wikipedia.org/wiki/C_data_types А еще полезней: http://www.open-std.org/jtc1/sc22/wg14/ откуда вытягивается PDF файл: http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf и далее поиск по документы... Это для мазохистов. Стандарты очень полезны, но для чтения не пригодны. Да и структуру языка они вряд ли позволят понять. Ю. p.s. Для любителей есть книга: Jones_Derek.M The New C Standard: An Economic and Cultural Commentary Это стандарт С99 с оргинальными комментариями автора. Причем комментарии выдержаны в том же стиле что и изложение стандарта. There are more ways of killing a cat than choking it with cream. Charles Kingsley
Re: Платформо-независимые типы в ANSI C.
On 2012-10-09, yuri.nefe...@gmail.com wrote: On Tue, 9 Oct 2012, Oleksandr Gavenko wrote: А еще полезней: http://www.open-std.org/jtc1/sc22/wg14/ откуда вытягивается PDF файл: http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf и далее поиск по документы... Это для мазохистов. Стандарты очень полезны, но для чтения не пригодны. Да и структуру языка они вряд ли позволят понять. Ю. p.s. Для любителей есть книга: Jones_Derek.M The New C Standard: An Economic and Cultural Commentary Это стандарт С99 с оргинальными комментариями автора. Причем комментарии выдержаны в том же стиле что и изложение стандарта. There are more ways of killing a cat than choking it with cream. Charles Kingsley Я упомянул о ней в другом ответе... -- Best regards!
Re: Платформо-независимые типы в ANSI C.
08.10.2012 00:24, Eugene Berdnikov пишет: On Sun, Oct 07, 2012 at 11:48:31PM +0400, yuri.nefe...@gmail.com wrote: Я слышал, что существуют типы, однозначно определяющие количество бит в объявляемой сущности (типа uint32), но не смог найти, где они определяются. Собственно, не знает ли здесь кто ответа на данный ворос? Ну или хотя бы направьте меня в нужныю рассылку, я буду очень признателен. stdint.h Для портабильности лучше следовать стандарту C99 и использовать inttypes.h: он не только включает stdint.h, но ещё содержит спецификаторы формата. А вообще очень полезный ресурс - wikipedia ) https://en.wikipedia.org/wiki/C_data_types У меня похожий вопрос. Только по функциям. Мне требуется преобразовывать 32-х битное время в строковый формат. Какой функцией это возможно сделать на 64-х битной машине? Сейчас я использую в своей глюкалке asctime(gmtime()), но на 64-х битной машине gmtime требует 8 байт. Как возможно преобразовать 32-х битное время? -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/50732147.2010...@yandex.ru
Re: Платформо-независимые типы в ANSI C.
On Mon, 8 Oct 2012, Артём Н. wrote: А вообще очень полезный ресурс - wikipedia ) https://en.wikipedia.org/wiki/C_data_types У меня похожий вопрос. Только по функциям. Мне требуется преобразовывать 32-х битное время в строковый формат. Какой функцией это возможно сделать на 64-х битной машине? Сейчас я использую в своей глюкалке asctime(gmtime()), но на 64-х битной машине gmtime требует 8 байт. Как возможно преобразовать 32-х битное время? Википедию видимо лень читать. https://en.wikipedia.org/wiki/C_date_and_time_functions time_t t = time(NULL); printf( %s\n, asctime(gmtime(t))); Работает отлично на любой платформе. Ю.
Re: Платформо-независимые типы в ANSI C.
08.10.2012 23:39, yuri.nefe...@gmail.com пишет: On Mon, 8 Oct 2012, Артём Н. wrote: А вообще очень полезный ресурс - wikipedia ) https://en.wikipedia.org/wiki/C_data_types У меня похожий вопрос. Только по функциям. Мне требуется преобразовывать 32-х битное время в строковый формат. Какой функцией это возможно сделать на 64-х битной машине? Сейчас я использую в своей глюкалке asctime(gmtime()), но на 64-х битной машине gmtime требует 8 байт. Как возможно преобразовать 32-х битное время? Википедию видимо лень читать. https://en.wikipedia.org/wiki/C_date_and_time_functions time_t t = time(NULL); printf( %s\n, asctime(gmtime(t))); Работает отлично на любой платформе. Ю. Под утро до меня дошло, что я спросил глупость. Занят борьбой с утечкой и плохо соображаю. :-( Там просто именно 32-х битное время, которое отсылают устройства, грубо говоря. Изначально я на 32-х битной системе всё пишу, но принёс, скомпилил у себя. Только сейчас дошло, что нужно дополнительную переменную time_t завести в функциях отображения, инициализировав её полученным 32-х битным временем (uint32). Спасибо. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/50738e6c.7040...@yandex.ru
Платформо-независимые типы в ANSI C.
Еще раз приветствую сообщество Debian. Я понимаю, что вопрос скорее к программистам, но я не знаю рассылок для программистов, а тут очень много квалифицированного народа. В общем, я пишу структуры для сетевого взаимодействия двух машин, одна из которых 32х-разрядная, а другая - 64х-разрядная. Мне нужно, чтобы структуры выглядели побитово одинакого на обеих платформах. Я слышал, что существуют типы, однозначно определяющие количество бит в объявляемой сущности (типа uint32), но не смог найти, где они определяются. Собственно, не знает ли здесь кто ответа на данный ворос? Ну или хотя бы направьте меня в нужныю рассылку, я буду очень признателен. -- ** * jabber: free...@jabber.mipt.ru * * Registered linux user #546240* ** -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87r4pacch6@ws00.freehck.ru
Re: Платформо-независимые типы в ANSI C.
On Sun, 7 Oct 2012, Dmitrii Kashin wrote: Еще раз приветствую сообщество Debian. Я понимаю, что вопрос скорее к программистам, но я не знаю рассылок для программистов, а тут очень много квалифицированного народа. В общем, я пишу структуры для сетевого взаимодействия двух машин, одна из которых 32х-разрядная, а другая - 64х-разрядная. Мне нужно, чтобы структуры выглядели побитово одинакого на обеих платформах. Я слышал, что существуют типы, однозначно определяющие количество бит в объявляемой сущности (типа uint32), но не смог найти, где они определяются. Собственно, не знает ли здесь кто ответа на данный ворос? Ну или хотя бы направьте меня в нужныю рассылку, я буду очень признателен. stdint.h А вообще очень полезный ресурс - wikipedia ) https://en.wikipedia.org/wiki/C_data_types Ю.
Re: Платформо-независимые типы в ANSI C.
On Sun, Oct 07, 2012 at 11:48:31PM +0400, yuri.nefe...@gmail.com wrote: Я слышал, что существуют типы, однозначно определяющие количество бит в объявляемой сущности (типа uint32), но не смог найти, где они определяются. Собственно, не знает ли здесь кто ответа на данный ворос? Ну или хотя бы направьте меня в нужныю рассылку, я буду очень признателен. stdint.h Для портабильности лучше следовать стандарту C99 и использовать inttypes.h: он не только включает stdint.h, но ещё содержит спецификаторы формата. А вообще очень полезный ресурс - wikipedia ) https://en.wikipedia.org/wiki/C_data_types -- Eugene Berdnikov -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20121007202438.ga4...@sie.protva.ru
Re: Платформо-независимые типы в ANSI C.
Eugene Berdnikov b...@protva.ru writes: On Sun, Oct 07, 2012 at 11:48:31PM +0400, yuri.nefe...@gmail.com wrote: Я слышал, что существуют типы, однозначно определяющие количество бит в объявляемой сущности (типа uint32), но не смог найти, где они определяются. stdint.h Для портабильности лучше следовать стандарту C99 и использовать inttypes.h: он не только включает stdint.h, но ещё содержит спецификаторы формата. А вообще очень полезный ресурс - wikipedia ) https://en.wikipedia.org/wiki/C_data_types Большое спасибо! -- ** * jabber: free...@jabber.mipt.ru * * Registered linux user #546240* ** -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87ipamc8d9@ws00.freehck.ru