[uquote="a5021",url="/forum/viewtopic.php?p=3526985#p3526985"][uquote="Psych",url="/forum/viewtopic.php?p=3526960#p3526960"]что можно сделать со стрингами ... Это не моя похоть[/uquote]
Или у вас пробивается что-то подсознательное или черти что можно подумать. [/uquote]
Ну пишут этот чертов код не один человек и каждый пишет по своему. Файлов куча --исправлять все под стринги да ну нах ---исправлю пару строчек. Я что-то не догоняю??
Кароче все работает через костыли збс))),
../mp3_task.c:35:24: error: pasting ")" and "H" does not give a valid preprocessing token
#define __UBRR CONCAT(UBRR,MP3_USART)
^
avr_helper.h:7:24: note: in definition of macro '_CONCAT_'
#define _CONCAT_(x,y) x ## y
^
../mp3_task.c:36:17: note: in expansion of macro 'CONCAT'
#define _UBRRH CONCAT(__UBRR,H)
^~~~~~
avr_helper.h:9:22: note: in expansion of macro '_CONCAT_'
#define CONCAT(y,x) _CONCAT_(y,x)
^~~~~~~~
../mp3_task.c:35:17: note: in expansion of macro 'CONCAT'
#define __UBRR CONCAT(UBRR,MP3_USART)
^~~~~~
../mp3_task.c:36:24: note: in expansion of macro '__UBRR'
#define _UBRRH CONCAT(__UBRR,H)
^~~~~~
../mp3_task.c:227:4: note: in expansion of macro '_UBRRH'
_UBRRH = UBRRH_VALUE;
^~~~~~
../mp3_task.c:37:31: error: pasting ")" and "L" does not give a valid preprocessing token
#define _UBRRL CONCAT(CONCAT(UBRR,MP3_USART),L)
^
avr_helper.h:7:24: note: in definition of macro '_CONCAT_'
#define _CONCAT_(x,y) x ## y
^
../mp3_task.c:37:17: note: in expansion of macro 'CONCAT'
#define _UBRRL CONCAT(CONCAT(UBRR,MP3_USART),L)
^~~~~~
avr_helper.h:9:22: note: in expansion of macro '_CONCAT_'
#define CONCAT(y,x) _CONCAT_(y,x)
^~~~~~~~
../mp3_task.c:37:24: note: in expansion of macro 'CONCAT'
#define _UBRRL CONCAT(CONCAT(UBRR,MP3_USART),L)
^~~~~~
../mp3_task.c:228:4: note: in expansion of macro '_UBRRL'
_UBRRL = UBRRL_VALUE;
^~~~~~
чё за хрень?!
Последний раз редактировалось ARV Ср дек 19, 2018 09:39:35, всего редактировалось 1 раз.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
не понял... три раза нормально, а на 4-й и 5-й раз порядок стал важен?
Добавлено after 59 minutes 17 seconds:
ну где же эти гуры, которые любят флудить по поводу всякого говнокода и прочих нюансов Си?! как нужно решить реальную проблему, так все молчат...
похоже, препроцессор категорически отказывается делать операцию ## с символом L или H справа от себя - все другие буквы приклеиваются нормально. интересно, почему так? где-то об этом сказано?
Добавлено after 5 minutes 51 second:
вот так прокатило:
[uquote="ARV",url="/forum/viewtopic.php?p=3529973#p3529973"]ну где же эти гуры, которые любят флудить по поводу всякого говнокода[/uquote]
Вы таким неуклюжим способом хотите подключить их к решению своих проблем? Как то это совсем без огонька у вас получается.
[uquote="ARV",url="/forum/viewtopic.php?p=3544835#p3544835"]планирую инициализировать все поля структуры y одинаковой строкой[/uquote]надо каждое поле и инициализировать
[uquote="ARV",url="/forum/viewtopic.php?p=3544835#p3544835"]получаю варнинг[/uquote]странно, у меня оно без варнингов собирается (gcc 6.5.0, 7.4.0, 8.2.0; -Wall)
[uquote="ARV",url="/forum/viewtopic.php?p=3544835#p3544835"]инициализируется только первое поле структуры[/uquote]так и должно быть
[uquote="ARV",url="/forum/viewtopic.php?p=3544835#p3544835"]планирую инициализировать все поля структуры y одинаковой строкой[/uquote]планировать мало, нужно сделать Ваш код инициализирует только первый элемент. Наверное, Вы по аналогии с
ARV писал(а):для структур правило "для всех" не действует?
Нет, конечно. С чего бы ?
Проинициализируется только первое поле структуры.
Такое правило (инициализация всех ячеек одним значением) только для массивов. В структурах могут быть разные типы полей, по этому подобное правило было бы нелогичным.
ARV писал(а):проинициализирует все элементы и поля семерками... или нет?
ЕМНИП, и для массива - нет. Только первый элемент, остальные - нулями.
Для GCC можно ещё '...' использовать для указания диапазона.
В любом случае, любые попытки инициализировать элементы чем-то, отличным от нуля, будут увеличивать размер прошивки, тем больше, чем больше элементов в массиве, структуре и т.д.
[uquote="WiseLord",url="/forum/viewtopic.php?p=3545811#p3545811"]ЕМНИП, и для массива - нет. Только первый элемент, остальные - нулями.[/uquote]
Неохота искать источники, но я так тоже всегда считал. А значит откуда то вбилось.)
AAX писал(а):решили, что всё проинициализируется "1"?
да, а разве я не прав?[/uquote]я ж ссылку дал. Можно было бы за минуту прочесть, и понять, прав-не прав... Это ж не википедия Это руководство GCC.
[uquote="ARV",url="/forum/viewtopic.php?p=3545804#p3545804"]
AAX писал(а): Но чтобы получить это предупреждение мне пришлось добавить gcc опцию -Wmissing-braces
у меня по умолчанию -Wall[/uquote]Вы, наверное, решили, что опция -Wall включает все возможные предупреждения компилятора? This enables all the warnings about constructions that some users consider questionable. Впрочем, ходить по ссылкам, читать - скукота... гораздо лучше положиться на мнение неизвестного человека из интернетов, с вероятностью 95% - бестолкового, т.к. "толковым" в интернетах отвисать некогда Мкей, тогда давайте так: -Wall не включает всех возможных предупреждений. С настройками по-умолчанию (-Wall) приведённая Вами конструкция не вызывает появления каких-либо предупреждений при компиляции при помощи gcc version 5.4.0 (AVR_8_bit_GNU_Toolchain_3.6.0_1734)