mr_smit Опубликовано 26 сентября, 2012 Поделиться Опубликовано 26 сентября, 2012 Добрый день. Использую отладочную плату discovery. Подключил по SPI дисплей от Siemens S65. Всё работает, но не могу понять как работать со sprintf в CooCox ??? В чистом виде не компилируется. Показывает не понятные ошибки привязанные к ядру. Погуглил, нашел: http://www.coocox.or...ae-001d7d723e56 Кокосовцы в курсе и предлагают прикрепить к проекту доп. файлик. Прикрепил. Всё стало компилироваться. Но sprintf не работает. Может кто прояснит ситуацию. char convert[32]; float temp = 23.9; ... put_string(50,22,"ТЕМПЕРАТУРА",0x0000,2); sprintf(convert,"%.1f",temp); put_string(50,50,convert,0x0000,2); Слово "температура" выводится, а само значение нет. Посмотрел их измененный файл. У них там написано: signed int sprintf(char *pStr, const char *pFormat, ...) Что значит троеточие??? И где форматирование точка с запятой ' f ' ? /* Parse type */ switch (*pFormat) { case 'd': case 'i': num = PutSignedInt(pStr, fill, width, va_arg(ap, signed int)); break; case 'u': num = PutUnsignedInt(pStr, fill, width, va_arg(ap, unsigned int)); break; case 'x': num = PutHexa(pStr, fill, width, 0, va_arg(ap, unsigned int)); break; case 'X': num = PutHexa(pStr, fill, width, 1, va_arg(ap, unsigned int)); break; case 's': num = PutString(pStr, va_arg(ap, char *)); break; case 'c': num = PutChar(pStr, va_arg(ap, unsigned int)); break; default: return EOF; } Думал modf использовать, но эта функция всё равно дробную часть в виде точки с запятой выдает. Умножение на 10 не помогает. Как тогда число с плавающей точкой перевести в строку то? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
tcoder Опубликовано 26 сентября, 2012 Поделиться Опубликовано 26 сентября, 2012 (изменено) Попробуйте так: sprintf(convert,"%f",temp); Троеточия подразумевают бесконечное число параметров. Т.е. можно не только одну но и более переменных выводить одной командой в один буфер, кроме вывод тут можно сделать сразу всего, например sprintf(convert,"Температура = %f",temp); * так работает в классическом Си, не знаю как с микроконтроллерами. ** судя по тому, что f не прописан, оно скорее всего и не заработает Изменено 26 сентября, 2012 пользователем tcoder 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Реле, вентиляторы, корпуса, разъемы, а так же любые электронные компоненты в нашем каталоге! Бесплатная доставка + 15% кэшбэк + скидки!Перейти на сайт ТМ Электроникс Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
mr_smit Опубликовано 27 сентября, 2012 Автор Поделиться Опубликовано 27 сентября, 2012 (изменено) Попробуйте так: sprintf(convert,"%f",temp); ** судя по тому, что f не прописан, оно скорее всего и не заработает Так оно и не работает. Я пробовал. Дурдом какой то Изменено 27 сентября, 2012 пользователем mr_smit 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
TDSS Опубликовано 27 сентября, 2012 Поделиться Опубликовано 27 сентября, 2012 А если разбить float на два целых числа и вывести их через точку ? 0 Иван Сусанин - первый полупроводник Ссылка на комментарий Поделиться на другие сайты Поделиться
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке. Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
mr_smit Опубликовано 28 сентября, 2012 Автор Поделиться Опубликовано 28 сентября, 2012 А если разбить float на два целых числа и вывести их через точку ? Можно и так (кстати как?). Но всё же почему нет стандартной функции 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Литиевые батарейки и аккумуляторы от мирового лидера EVE в КомпэлКомпания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
TDSS Опубликовано 28 сентября, 2012 Поделиться Опубликовано 28 сентября, 2012 (изменено) Может кто знает лучший вариант... я делал так: float pi = 3.14; int pi_int = pi; //здесь будет целая часть - 3 int pi_float = ((pi*100)-(pi_int*100)); //здесь будет дробная часть - 14 Если в дробной части нужна точность до тысячных, то ((pi*1000)-(pi_int*1000)) и т.д... Далее просто выводим pi_int и pi_float через точку и получим 3.14 Изменено 28 сентября, 2012 пользователем TDSS 0 Иван Сусанин - первый полупроводник Ссылка на комментарий Поделиться на другие сайты Поделиться
mr_smit Опубликовано 30 сентября, 2012 Автор Поделиться Опубликовано 30 сентября, 2012 (изменено) Служба поддержки кокоса молчит. Так жаль. Мне понравился этот компилятор. А ля кодевижн для Мег. Изменено 30 сентября, 2012 пользователем mr_smit 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mr_smit Опубликовано 3 октября, 2012 Автор Поделиться Опубликовано 3 октября, 2012 Я вообще не понимаю что за `_sbrk_r' `_lseek' `_kill' `__exidx_start' ему нужны [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-sbrkr.o): In function `_sbrk_r': [cc] writer.c:(.text+0x10): undefined reference to `_write' [cc] sbrkr.c:(.text+0xc): undefined reference to `_sbrk' [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-writer.o): In function `_write_r': [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-closer.o): In function `_close_r': [cc] closer.c:(.text+0xc): undefined reference to `_close' [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-lseekr.o): In function `_lseek_r': [cc] lseekr.c:(.text+0x10): undefined reference to `_lseek' [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-readr.o): In function `_read_r': [cc] readr.c:(.text+0x10): undefined reference to `_read' [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/armv7-m\libgcc.a(unwind-arm.o): In function `get_eit_entry': [cc] unwind-arm.c:(.text+0x144): undefined reference to `__exidx_start' [cc] unwind-arm.c:(.text+0x148): undefined reference to `__exidx_end' [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-abort.o): In function `abort': [cc] abort.c:(.text+0xa): undefined reference to `_exit' [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-signalr.o): In function `_kill_r': [cc] signalr.c:(.text+0xe): undefined reference to `_kill' [cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-signalr.o): In function `_getpid_r': [cc] signalr.c:(.text+0x28): undefined reference to `_getpid' [cc] collect2: ld returned 1 exit status BUILD FAILED Total time: 1 second 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mr_smit Опубликовано 8 октября, 2012 Автор Поделиться Опубликовано 8 октября, 2012 (изменено) Ответ с кокосового форума: //do the following: float float1; snprintf(buf, sizeof(buf), "blablabla %d.%d", (int8_t) float1, (((int16_t)(float1 * 10.0)) % 10)); Изменено 8 октября, 2012 пользователем mr_smit 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
admin Опубликовано 18 ноября, 2012 Поделиться Опубликовано 18 ноября, 2012 При отладке проекта в CoIDE 1.6.0 в вкладке Variables, переменные выводятся по умолчанию в DEC формате, каждый раз приходится переключать на HEX. Нигде не могу найти настройки, чтобы все время выводилось по умолчанию в шестнадцатеричном формате. 0 VK | Дзен | Telegram | OK Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Илья Опубликовано 6 ноября, 2013 Поделиться Опубликовано 6 ноября, 2013 Здравствуйте. Все наверно сталкивались с возможностью автозамены кода. (К примеру вывод конструкции if-else когда начинаешь набирать if). Но вид в котором выстраиваются скобки совершенно не устраивает. Может кто знает, где это можно изменить? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Cergei Опубликовано 4 февраля, 2015 Поделиться Опубликовано 4 февраля, 2015 Добрый день. Использую отладочную плату discovery. Подключил по SPI дисплей от Siemens S65. Всё работает, но не могу понять как работать со sprintf в CooCox ??? В чистом виде не компилируется. Показывает не понятные ошибки привязанные к ядру. Погуглил, нашел: http://www.coocox.or...ae-001d7d723e56 Кокосовцы в курсе и предлагают прикрепить к проекту доп. файлик. Прикрепил. Всё стало компилироваться. Но sprintf не работает. Может кто прояснит ситуацию. char convert[32]; float temp = 23.9; ... put_string(50,22,"ТЕМПЕРАТУРА",0x0000,2); sprintf(convert,"%.1f",temp); put_string(50,50,convert,0x0000,2); Слово "температура" выводится, а само значение нет. Посмотрел их измененный файл. У них там написано: signed int sprintf(char *pStr, const char *pFormat, ...) Что значит троеточие??? И где форматирование точка с запятой ' f ' ? /* Parse type */ switch (*pFormat) { case 'd': case 'i': num = PutSignedInt(pStr, fill, width, va_arg(ap, signed int)); break; case 'u': num = PutUnsignedInt(pStr, fill, width, va_arg(ap, unsigned int)); break; case 'x': num = PutHexa(pStr, fill, width, 0, va_arg(ap, unsigned int)); break; case 'X': num = PutHexa(pStr, fill, width, 1, va_arg(ap, unsigned int)); break; case 's': num = PutString(pStr, va_arg(ap, char *)); break; case 'c': num = PutChar(pStr, va_arg(ap, unsigned int)); break; default: return EOF; } Думал modf использовать, но эта функция всё равно дробную часть в виде точки с запятой выдает. Умножение на 10 не помогает. Как тогда число с плавающей точкой перевести в строку то? У меня тоже сейчас похожая проблема. Ссылка, что ты прикрепил ведёт на несуществующую станицу. Можешь рассказать, что за файлик, и как его подключить? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mr_smit Опубликовано 5 февраля, 2015 Автор Поделиться Опубликовано 5 февраля, 2015 Можешь рассказать, что за файлик, и как его подключить? На стартовой странице кокоса где галочками выбираются используемые библиотеки надо поставить глочку "retarget printf". Сейчас вроде поправили эту библиотеку и всё работает корректно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 21 февраля, 2015 Поделиться Опубликовано 21 февраля, 2015 (изменено) я подключил так #include <stdlib.h> #include <stdio.h> #include <string.h> а потом сделал так void PrintTarget(uint32_t Value, char *End) { char str_buf_V[8]; char str_buf[8]; sprintf(str_buf_V, "%04u%s", Value, End); str_buf[0] = str_buf_V[0]; str_buf[1] = str_buf_V[1]; str_buf[2] = 0x2E; str_buf[3] = str_buf_V[2]; str_buf[4] = str_buf_V[3]; str_buf[5] = str_buf_V[4]; str_buf[6] = str_buf_V[5]; MT_WH1602_SetDDRAMAddress(0x0A); while (MT_WH1602_ReadBusy()!=FALSE); lcd_write_str(str_buf); } в реализации тупо, но на деле работает ) вся эта билиберда с массивом только для того, чтобы точку в нужное место поместить. Так как у меня не флоат, а целое с определенной точностью Изменено 21 февраля, 2015 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 28 февраля, 2015 Поделиться Опубликовано 28 февраля, 2015 ся эта билиберда с массивом только для того, чтобы точку в нужное место поместить.А в строке форматирования sprintf её добавить ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 28 февраля, 2015 Поделиться Опубликовано 28 февраля, 2015 когда я почитал реализацию sprintf, то понял, что лучше вручную 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
atrel Опубликовано 29 марта, 2015 Поделиться Опубликовано 29 марта, 2015 Всем привет. Нахожусь на стадии изучения этого камня параллельно языка C, возникают вопросы на которые ищу ответ среди вас. Решил включить диодики на плате STM32VLDISCOVERY c STM32F100RB. void main() { //Enable port C clocking *(unsigned long*)(0x40021018) |= 0x10; /*0x40021000 - адрес регистра AHB, 0x018 - добавка для APB2, 0x10 значение для IOPCEN */ //little delay for GPIOC get ready volatile unsigned long i=0; i++; i++; i++; i=0; //режим работы C 8 *(unsigned long*)(0x40011004) |= 0x10; /* 0x40011000 адрес GPIOC , 0x04 - адрес CRH , 0x10 - значение для 8 пина пуш-пул, 2 МГц */ //Turn LED ON! *(unsigned long*)(0x40011010) = 0x100; /* 0x40011000 адрес GPIOC , 0x10 - адрес BSRR, 0x100 - значение для 8 пина */ while(1); } К сожалению диоды не горят. Все мои попытки как-то запустить сей процесс не помогли. Есть ли здесь ошибка? Информацию брал с сайта STM, и хабра . Этот камень для меня первый. Буду благодарен за вашу помощь. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 29 марта, 2015 Поделиться Опубликовано 29 марта, 2015 (изменено) вот ты извращенец наверняка гденить в адресах этих напутался. Есть же нормальный метод инициализации порта, почти человеческим языком GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF, ENABLE); // GPIO A GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_InitStructure); // GPIO B GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); // GPIO C GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOC, &GPIO_InitStructure); и так далее. Ошибки конфигурации исключаются автоматически. И не слушай никого, кто говорить что инициализация структурами это бред и говно и некрасиво. Зато оно всегда работает правильно и это свойство превешивает 100500 любых аргументов против лучше сразу привыкнуть к нормальной записи и ей пользоваться. Тем более в кокосе великолепнейшая справка по всем функциям и библиотекам со встроенными примерами Изменено 29 марта, 2015 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
atrel Опубликовано 29 марта, 2015 Поделиться Опубликовано 29 марта, 2015 (изменено) mail_robot, спасибо за ответ. Но, хотелось бы, для общего развития и понимания работы данного девайса действовать через регистры. К сожалению, смотря в библиотеки к стмке, я так и непонял как они, там, работают, поэтому пришлось заниматься сочинительством. Буду рад участию всех кто понял эту вундервафлю. Изменено 29 марта, 2015 пользователем atrel 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 29 марта, 2015 Поделиться Опубликовано 29 марта, 2015 (изменено) в стм НЕ надо через регистры. Это совсем другой класс процессора. И адреса в нем знать совершенно не обязательно. Модель программирования отличается от AVR и PIC. Там ресурсов немного, регистры - по пальцам. А тут их просто море, на каждый чих по флагу, на каждый пук свой регистр. На каждое действие куча перекрестных взаимодействий. Если вы будете продолжать в том же духе, думаю знакомство с стм будет весьма мрачным И кстати не стоит шибко экономить ресурсы и ужимать код. Тут это уже не требуется. Нет, соблюдать правила писанины конечно надо, но не настолько жестко. Производительности по сравнению с 8-битками просто пипец как много... В целом понять нужно немного. 1. Вся периферия живет своей жизнью. Каждый модуль может произвольно подключаться к любому другому, каскадироваться и работать независимо от ядра. 2. В СТМ все просто, не надо усложнять наследием прошлого. 3. Все надо писать понятным языком библиотеки CMSIS 4. Писать лучше на С++. Процедурный код уже не пойдет на такие обьемы. Поэтому начать лучше с кокоса, но потом все равно пересаживаться на Keil Изменено 29 марта, 2015 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
atrel Опубликовано 29 марта, 2015 Поделиться Опубликовано 29 марта, 2015 (изменено) Вам Не надо. А Мне Интерестно! Поэтому я и ищу соучастников. К стати, работаю я в кокосе. Может он неможет так? (ошибок при компиляции не выдаёт). Изменено 29 марта, 2015 пользователем atrel 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 29 марта, 2015 Поделиться Опубликовано 29 марта, 2015 ну удачи, я все сказал 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
atrel Опубликовано 29 марта, 2015 Поделиться Опубликовано 29 марта, 2015 Короче, работает так void main() { //Enable port C clocking *(unsigned long*)(0x40021018) |= 0x10; /*0x40021000 - адрес регистра AHB, 0x018 - добавка для APB2, 0x10 значение для IOPCEN */ //little delay for GPIOC get ready volatile unsigned long i=0; i++; i++; i++; i=0; //режим работы C 8 *(unsigned long*)(0x40011004) = 0x02; /* 0x40011000 адрес GPIOC , 0x04 - адрес CRH , 0x10 - значение для 8 пина пуш-пул, 2 МГц */ //Turn LED ON! //*(unsigned long*)(0x4001100c) = 0xffff; *(unsigned long*)(0x40011010) = 0x100; /* 0x40011000 адрес GPIOC , 0x10 - адрес BSRR, 0x100 - значение для 8 пина */ while(1); } Всё дело было в неправильном значении в CRH и просто = вместо |=. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
atrel Опубликовано 30 марта, 2015 Поделиться Опубликовано 30 марта, 2015 Теперь, вопрос стоит об атомарных операциях. 1. Как их делать? 2. Их преимущество? 3. Почему во многих источниках говорится об группах битов, а не единицах? Всегда рад Вашему участию. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 30 марта, 2015 Поделиться Опубликовано 30 марта, 2015 (изменено) почитайте на тему битовых массивов. Там достаточно много инструментов описано. Но честно говоря смысла в этом не много. Экономии на грош, а потери времени на кодинг существенные. Тем более что С++11 вроде как умеет это дело автоматически оптимизировать даже если и не объявлять битовых структур (по непроверенным слухам). GCC таким свойством не владеет, но зато более толерантен к другим моментам, поэтому код из GCC далеко не всегда прямо переносится на С++11 В остальном битовые операции те же самые что и в восьмибитках (если речь идет о битовом доступе к регистрам и переменным). Синтаксис языка тот же самый Изменено 30 марта, 2015 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.