Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Сообщения без ответов | Активные темы
Страница 263 из 386
[ Сообщений: 7702 ]
... , , , , , , ...
Автор
Сообщение
WiseLord
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вт янв 23, 2018 14:30:54
Друг Кота
Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59Сообщений: 4897Откуда: Минск
Рейтинг сообщения: 0
А как, по Вашему, без скобок различить buf[3][2] и buf[2][3]? Естественно, смысл их как раз в этом.
Спойлер Код:
uint8_t buf[4][2][3][5] = { // 4 группы { // по 2 группы { // по 3 группы {43, 122, 43, 81, 28}, // по 5 элементов uint8_t {46, 553, 21, 35, 67}, {42, 169, 60, 31, 98}, }, { {74, 296, 43, 62, 28}, {54, 323, 21, 33, 89}, {45, 787, 21, 17, 90}, }, }, { { {84, 122, 43, 81, 28}, {74, 553, 21, 35, 67}, {84, 169, 60, 31, 98}, }, { {87, 26, 43, 69, 28}, {95, 33, 21, 32, 89}, {04, 77, 21, 18, 90}, }, }, { { {84, 12, 43, 82, 28}, {74, 53, 21, 35, 67}, {84, 19, 60, 36, 98}, }, { {95, 33, 21, 32, 89}, {87, 26, 43, 69, 28}, {24, 77, 21, 18, 90}, }, }, { { {84, 19, 60, 36, 98}, {84, 12, 43, 82, 28}, {74, 53, 21, 35, 67}, }, { {87, 26, 43, 69, 28}, {04, 77, 21, 18, 90}, {95, 33, 21, 32, 89}, }, }, };
Вернуться наверх
Реклама
Пока_без_кота
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вт янв 23, 2018 20:27:19
Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54Сообщений: 359
Рейтинг сообщения: 0
Доброго времени суток. Раньше жил - не тужил, именовал константы с помощью дефайнов и горя не знал. Сегодня вычитал, что это неправильно, так делают лузеры, и им потом девушки не дают... Надо исправляться
Итак, было:
Код:
#define DEFAULT 100;
Далее в EEPROM объявляется переменная с этим значением:
Код:
unsigned char EEMEM mode = DEFAULT;
И все чудесно работает.
Переделал так:
Код:
const unsigned char DEFAULT = 100;
Теперь на строчку с объявлением переменной в EEPROM ругается "error: initializer element is not constant". Компилятор GCC. Что я сделал не так ?
Если что, 5 правило отсюда
http://chipenable.ru/index.php/embedded ... rules.html
Вернуться наверх
Реклама
ARV
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вт янв 23, 2018 20:48:32
Ум, честь и совесть. И скромность.
Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18447Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Пока_без_кота писал(а):
Раньше жил - не тужил, именовал константы с помощью дефайнов и горя не знал. Сегодня вычитал, что это неправильно, так делают лузеры, и им потом девушки не дают...
не читайте глупости
Пока_без_кота писал(а):
Переделал так:
вы объявили переменную, которая по умолчанию получает значение 100 и не может быть изменена в дальнейшем.
Пока_без_кота писал(а):
Теперь на строчку с объявлением переменной в EEPROM ругается
и правильно делает, так как на этапе компиляции переменные не доступны.
верните, как было, и не парьте мозг
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
Пока_без_кота
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вт янв 23, 2018 22:00:23
Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54Сообщений: 359
Рейтинг сообщения: 0
Спасибо
Вернуться наверх
Реклама
AndyBig
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вт янв 23, 2018 22:23:40
Грызет канифоль
Карма: -2
Рейтинг сообщений: 43
Зарегистрирован: Ср янв 17, 2018 13:09:14Сообщений: 250
Рейтинг сообщения: 0
ARV писал(а):
не читайте глупости
Полностью согласен.
Не извращайтесь, спокойно пользуйтесь #define и дальше
Только желательно явно указывать тип:
Код:
#define DEFAULT (unsigned char)100;
Вернуться наверх
Реклама
ARV
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Ср янв 24, 2018 07:06:48
Ум, честь и совесть. И скромность.
Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18447Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
AndyBig писал(а):
Только желательно явно указывать тип
для констант, укладывющихся в
int , не обязательно, а для больших - присоединяюсь к рекомендации.
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
Реклама
arkhnchul
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Ср янв 24, 2018 14:58:02
Карма: 38
Рейтинг сообщений: 621
Зарегистрирован: Пн апр 06, 2015 11:01:53Сообщений: 3092Откуда: москва, уфа
Рейтинг сообщения: 0
Теперь на строчку с объявлением переменной в EEPROM ругается "error: initializer element is not constant". Компилятор GCC. Что я сделал не так ?
из стандарта:
Цитата:
All the expressions in an initializer for an object that has static storage duration shall be constant expressions or string literals.
так, к примеру, вполне корректно:
Код:
static const unsigned int DEF=100; int main(){ volatile unsigned int def = DEF; return 0; }
вообще там все разумно, но стоит добавить "где это возможно". И компилятор должен быть достаточно мозговитый и со включенными оптимизациями - иначе под эту константу-переменную (она с точки зрения языка таки переменная с неизменным значением) выделится память.
вот тот кусочек кода, gcc с разной оптимизацией
-O0
Спойлер Код:
arkhnchul@tween-arkhost:/tmp/ctst$ gcc -O0 -S -c tst1.c -o - .file "tst1.c" .section .rodata .align 4 .type DEF, @object .size DEF, 4 DEF: .long 100 .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl $100, %eax movl %eax, -4(%rbp) movl $0, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Debian 7.2.0-19) 7.2.0" .section .note.GNU-stack,"",@progbits
-O1
Спойлер Код:
arkhnchul@tween-arkhost:/tmp/ctst$ gcc -O1 -S -c tst1.c -o - .file "tst1.c" .text .globl main .type main, @function main: .LFB0: .cfi_startproc movl $100, -4(%rsp) movl $0, %eax ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Debian 7.2.0-19) 7.2.0" .section .note.GNU-stack,"",@progbits
т.е. нужно хотя бы O1
Вернуться наверх
Chip115
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вс янв 28, 2018 13:25:13
Сверлит текстолит когтями
Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20Сообщений: 1132Откуда: Новосибирск
Рейтинг сообщения: 0
Подскажите, что значит эта запить?
Вообще то тут пытались инициализировать двумерный массив вот только с ошибками, надо было сделать так:
Код:
uint8_t buf [3][2] = { {12 , 18}, {11, 28}, {13, 15} };
Вот еще пример
Код:
static const registerSetting_t preferredSettings[]= { {CC1101_IOCFG0, 0x06}, {CC1101_FIFOTHR, 0x47}, {CC1101_SYNC1, 0x7A}, {CC1101_SYNC0, 0x0E}, {CC1101_PKTLEN, 0x14}, {CC1101_PKTCTRL0, 0x05}, {CC1101_FSCTRL1, 0x06}, {CC1101_FREQ2, 0x21}, {CC1101_FREQ1, 0x62}, {CC1101_FREQ0, 0x76}, {CC1101_MDMCFG4, 0xCA}, {CC1101_MDMCFG3, 0xF8}, {CC1101_MDMCFG2, 0x16}, {CC1101_DEVIATN, 0x40}, {CC1101_MCSM0, 0x18}, {CC1101_FOCCFG, 0x16}, {CC1101_AGCCTRL2, 0x43}, {CC1101_AGCCTRL1, 0x49}, {CC1101_WORCTRL, 0xFB}, {CC1101_FSCAL3, 0xE9}, {CC1101_FSCAL2, 0x2A}, {CC1101_FSCAL1, 0x00}, {CC1101_FSCAL0, 0x1F}, {CC1101_TEST2, 0x81}, {CC1101_TEST1, 0x35}, {CC1101_TEST0, 0x09}, };
Видимо по четным индексам идет адрес, по не четным - значение. Скобки для удобства чтения кода. Вроде так.
_________________ Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему! © Альберт Эйнштейн
Вернуться наверх
uldemir
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вс янв 28, 2018 13:39:17
Друг Кота
Карма: 50
Рейтинг сообщений: 1398
Зарегистрирован: Пт авг 28, 2009 21:34:30Сообщений: 7321Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Вероятнее всего, что тип registerSetting_t состоит из двух элементов. Был бы int - было бы сообщение об ошибке. не?
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Вернуться наверх
Реклама
Chip115
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вс янв 28, 2018 16:17:18
Сверлит текстолит когтями
Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20Сообщений: 1132Откуда: Новосибирск
Рейтинг сообщения: 0
Не могу разкурочить этот тип. Это выдал кодогенератора, мол заготовка. Определение этого типа нет.
_________________ Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему! © Альберт Эйнштейн
Вернуться наверх
Siarzhuk
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Вс янв 28, 2018 19:27:18
Потрогал лапой паяльник
Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55Сообщений: 353
Рейтинг сообщения: 0
Это выдал кодогенератора, мол заготовка. Определение этого типа нет.
Если код собирается - его не может не быть. Гляньте в препроцессорный выхлоп - возможно для этого придётся включить временно опцию preprocess only в настройках проекта. В папочке с временными файлами компиляции загляните в разные типы - они или *.i или *.pre, иногда вместо объектников - у разных тулчейнов по разному.
_________________ Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR !
Вернуться наверх
dm211
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:17:06
Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13Сообщений: 208
Рейтинг сообщения: 0
Почему переменная, обьявленная как unsigned char уходит на минус?
Код:
unsigned char x; if(x<0) x=0; // так компилятор ругается if(x<=0) x=0; // уходит на минус if(x==0) x=0; // тоже уходит на минус if(x<1) x=0; // тоже уходит на минус
Это в IAR для ARM.
Вернуться наверх
Reflector
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:20:19
Поставщик валерьянки для Кота
Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03Сообщений: 2089
Рейтинг сообщения: 0
Почему переменная, обьявленная как unsigned char уходит на минус?
Как переменная, обьявленная как unsigned char, может уйти на минус?
Вернуться наверх
ARV
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:21:42
Ум, честь и совесть. И скромность.
Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18447Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Что значит "уходит в минус"? Ну и напоминаю: по умолчанию все операнды выражения автоматически приводятся к int (или к типу более "широкого" операнда). поэтому при сравнении x с 1 и переменная х, и константа 1 становятся ЗНАКОВЫМИ. со всеми вытекающими.
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
arkhnchul
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:22:41
Карма: 38
Рейтинг сообщений: 621
Зарегистрирован: Пн апр 06, 2015 11:01:53Сообщений: 3092Откуда: москва, уфа
Рейтинг сообщения: 0
что значит "уходит на минус"?
Вернуться наверх
dm211
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:24:04
Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13Сообщений: 208
Рейтинг сообщения: 0
Забыл написать, уходит на минус при x--;
Вернуться наверх
ARV
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:25:54
Ум, честь и совесть. И скромность.
Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56Сообщений: 18447Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
dm211 писал(а):
уходит на минус при x--;
и в каком месте вашего вопроса это происходит?
беззнаковая переменная у вас не уходит в минус, она становится наоборот, слишком большой
_________________если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...Мой уютный бложик ... заходите!
Вернуться наверх
arkhnchul
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:27:03
Карма: 38
Рейтинг сообщений: 621
Зарегистрирован: Пн апр 06, 2015 11:01:53Сообщений: 3092Откуда: москва, уфа
Рейтинг сообщения: 0
еще раз: что вы называете "уходит на минус"?
Вернуться наверх
Reflector
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:27:34
Поставщик валерьянки для Кота
Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03Сообщений: 2089
Рейтинг сообщения: 0
Забыл написать, уходит на минус при x--;
Ты понимаешь что такое беззнаковая переменная? Если она равно 0 и отнять 1, то получим 255.
Вернуться наверх
dm211
Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:29:20
Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13Сообщений: 208
Рейтинг сообщения: 0
Ну на табло у меня минус показывает
sprintf
А я хочу, чтобы ниже нуля был ноль, тогда вопрос-что делать?
Вернуться наверх
Страница 263 из 386
[ Сообщений: 7702 ]
... , , , , , , ...
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения