FDA (15.01.2021 08:56, просмотров: 521) ответил SciFi на Тоже не верю. Ругань компилятора в студию.
Вот таких ошибок тысячи. Что-то связано со строками. Как я понял,
для них надо использовать тип char, а в проекте везде типы uint8_t,
uint16_t и т.д. Плотно пока не разбирался.
-
- Нормальные предупреждения, абсолютно по делу. По сути режим C89
просто отключает эти предупреждения. Если вам нравится прятать
голову в песок, отключите их и в режиме C99, делов-то. - SciFi(15.01.2021 09:07)
- Не могу понять как вот эти предупреждения отключить: FDA(193 знак., 15.01.2021 11:12)
- Кстати советую запомнить, я, например, длительное время не знал,
пока не обделался на этом, что в языке C есть три типа char: signed char, unsigned char и char. И это три разных типа. fk0(29 знак., 15.01.2021 11:37)
- Да, тут ты совершенно прав! При переходе на C99 проблемы были как
раз с типами. В итоге за пару дней я всё таки смог проект
перевести. Пришлось всю работу со строками заменить на char. Плюс
добавить очень много прямых преобразований типов. Например,
компилятор ругался при присвоении типу uint16_t типа uint32_t. В
итоге всё заработало. Всем спасибо за помощь! - FDA(19.01.2021 15:18)
- Я знал. Что С - для извращенцев. Очередное подтверждение. - Kpoк(18.01.2021 13:17)
- А вот и статью нашёл - Dingo(18.01.2021 12:25, ссылка)
- Не уверен, что правильно помню, но вроде версии signed / unsigned
не менее 8 бит, а просто char привязан к машинному слову. На хабре
человек разбирал на примере, когда char 9 бит, а signed/unsigned 8
бит. Dingo(31 знак., 18.01.2021 12:23)
- На сколько мне известно, char равен signed char или unsigned char,
в зависимости от ключей компилятора. Обычно, по умолчанию, char ===
signed char - AlexBi(15.01.2021 11:54)
- Я char не знал - а что это по сравнению с собратьями? - MBedder(15.01.2021 11:39)
- Их нужно не отключить, я однажды исправить. Там исправления такого
уровня, что делаются чуть ли не регэкспом, во всяком случае любой
дурак по-шаблону справится. Исправления код не изменят. Т.е. легко
проверить, что после исправлений собирается такой же бинарник. Суть
исправлений: руками привести типы насильно (через каст к void*:
"func((const void*)var)"). Хотя вообще за частью таких варнингов
запросто могут стоять ошибки, со строками наверное одно из немногих
исключений, fk0(79 знак., 15.01.2021 11:34)
- Use the command line option "-nw= n". Where n is the warning message you want to suppress. - m16(15.01.2021 11:31)
- У PICC18 отдельные предупреждения не отключаются, только уровень
настраивается. Но есть другой путь: предупреждения лежат в каком-то
.txt файлике в составе компилятора и там в каждой строчке номер,
буква и строка ошибки. Буква определяет это warning, error, и
уровень варнинга. Как-то так. Давно было дело, я уже не помню. У
меня в проекте этот файлик свой был и там нужные варнинги были
понижены в уровне и отключены. - fk0(15.01.2021 11:28)
- Не разбираюсь в мелкочиповских компиляторах. По форуму сложилось
впечатление, что они кривые. Как у них отключаются предупреждения и
отключаются ли вообще — не в курсе, увы :-( - SciFi(15.01.2021 11:18)