-
- В Иаре есть опция компилятора - требовать прототип каждой функции, дает ошибку. Прототип это инструкция по вызову функции. Может там типы данных аргументов преобразовывать надо. - IBAH(01.10.2023 19:53)
- Это просто умные люди за тебя все решили. il-2(423 знак., 01.10.2023 13:07)
- Можно прописать прототип в .h, потом #include его, этот .h. Просто
смутно помню, что-то такое было. - Бapбoc(01.10.2023 12:37)
- Чем это отличается от того, чтобы этот прототип просто вбить в
начале файла? - st256(01.10.2023 12:49)
- Во-пегвых, это кгасиво. Во-вторых, кто его знает, кайло это. - Бapбoc(01.10.2023 13:00)
- Чем это отличается от того, чтобы этот прототип просто вбить в
начале файла? - st256(01.10.2023 12:49)
- по новым веяниям (6-й компилятор Keil) так напоминают, что не
встречен прототип, а функция не объявлена как static. - Vit(01.10.2023 12:13)
- Ближе к истине. А где этот прототип вставлять? Я его уже только на
лбу не рисовал. - st256(01.10.2023 12:16)
- Делаем файл с именем, например, "project.h" Tyмблep(371 знак., 02.10.2023 16:14)
- Более лучше к каждому модулю создавать свой хедер. По сути список
прототипов функций модуля является частью интерфейса модуля (вместе
с объявлениями типов, имеющих отношение к модулю и т.п.) А
включение хедера в другой модуль явным образом демонстрирует
зависимость одного модуля от другого. Это полезно для
структурирования программы. Валить всё в одну кучу - это фу. - SciFi(02.10.2023 16:19)
- ...и в какой то момент потребуется вернуться к проекту Tyмблep(108 знак., 02.10.2023 16:28)
- В смысле "искать"? VS Code знает, где что лежит. Впрочем, я не
настаиваю. - SciFi(02.10.2023 16:29)
- Да я тоже не настаиваю. Tyмблep(389 знак., 02.10.2023 16:38)
- это как бы глобальная "печаль" - переход от "человека понятного текста" к "базе данных программы" - Zoro(02.10.2023 16:32)
- В смысле "искать"? VS Code знает, где что лежит. Впрочем, я не
настаиваю. - SciFi(02.10.2023 16:29)
- ...и в какой то момент потребуется вернуться к проекту Tyмблep(108 знак., 02.10.2023 16:28)
- Более лучше к каждому модулю создавать свой хедер. По сути список
прототипов функций модуля является частью интерфейса модуля (вместе
с объявлениями типов, имеющих отношение к модулю и т.п.) А
включение хедера в другой модуль явным образом демонстрирует
зависимость одного модуля от другого. Это полезно для
структурирования программы. Валить всё в одну кучу - это фу. - SciFi(02.10.2023 16:19)
- Если глобальная функция, то прототип в файле .h, а функция в файле.с, если функция локальная, то и прототип и функция в файле .с и при этом и прототип и функция должны быть объявлены как static - Alt@ir(01.10.2023 13:07)
- поставь в файле с телом функции перед ним и/или в хедере,
включаемом в файл с телом Vit(60 знак., 01.10.2023 12:47)
- Я так и сделаю, только это чо??? Мне этот код потом переносить из
Keil в IAR придется. - st256(01.10.2023 12:50)
- GCC себя точно так же ведёт. Требует прототип, иначе предупреждение. В Си нормально объявлять прототип, а затем, определять функцию. Разумеется, прототип должен попадаться препроцессору(?) раньше, чем определение (тело). - Nikolay_Po(01.10.2023 20:04)
- такое работать везде должно - оно не мешает. раньше, например, IAR для MSP430 похожим страдал тоже - Vit(01.10.2023 13:28)
- Я так и сделаю, только это чо??? Мне этот код потом переносить из
Keil в IAR придется. - st256(01.10.2023 12:50)
- Делаем файл с именем, например, "project.h" Tyмблep(371 знак., 02.10.2023 16:14)
- Ближе к истине. А где этот прототип вставлять? Я его уже только на
лбу не рисовал. - st256(01.10.2023 12:16)
- Не очень понял вопрос. Ошибка в имени функции? Cкpипaч(285 знак., 01.10.2023 11:10 - 11:52)
- Я ни разу не программист, но подозреваю, что предупреждение от
того, что определение функции в одном модуле, а вызывается в другом
или нескольких модулях компиляции. Если это так, то достаточно в
другом(их) месте добавить этот же прототип с определением extern. - reZident(01.10.2023 11:36)
- Не, у меня все в одном файле, сначала ф-ция, а потом мэйн. - st256(01.10.2023 12:12)
- Функции по умолчанию extern. В месте вызова нужен прототип (не
определение), чтобы компилятор мог проверить типы параметров. Cкpипaч(184 знак., 01.10.2023 11:42)
- Уже пробовал. Только еще больше ванингов получается. - st256(01.10.2023 12:13)
- Имя функции в описании и в месте вызова точно совпадает? Число и типы параметров? Результат функции - используется? (если
объявлен, но не используется - может приводить к такому
предупреждению) - Cкpипaч(01.10.2023 12:40)
- Если не совпадет будет ошибка, а не варнинг - Alt@ir(01.10.2023 13:54)
- Если результат выполнения функции не используется, ошибки не будет. - Cкpипaч(01.10.2023 15:59)
- В ИАРе будет. - Alt@ir(01.10.2023 18:26)
- Если результат выполнения функции не используется, ошибки не будет. - Cкpипaч(01.10.2023 15:59)
- Если не совпадет будет ошибка, а не варнинг - Alt@ir(01.10.2023 13:54)
- Имя функции в описании и в месте вызова точно совпадает? Число и типы параметров? Результат функции - используется? (если
объявлен, но не используется - может приводить к такому
предупреждению) - Cкpипaч(01.10.2023 12:40)
- Уже пробовал. Только еще больше ванингов получается. - st256(01.10.2023 12:13)
- Я ни разу не программист, но подозреваю, что предупреждение от
того, что определение функции в одном модуле, а вызывается в другом
или нескольких модулях компиляции. Если это так, то достаточно в
другом(их) месте добавить этот же прототип с определением extern. - reZident(01.10.2023 11:36)
- Компилятор до вызова функции должен в тексте "встретить" функцию
или прототип. - BlackMorda(01.10.2023 10:49)
- Это я как бы знаю. Я не знаю, как это сделать! Или не знаю, что
такое прототип, или не знаю куда его перед функцией ставить. - st256(01.10.2023 10:51)
- Прототип и функция в одном файле? - Alt@ir(01.10.2023 11:57)
- ну я не знаю, чего этому кейлу надо. Пробовал и так и так. Где-то я в букваре пропустил пару параграфов. - st256(01.10.2023 12:14)
- Прототип должен быть перед вызовом, а не перед функцией. - BlackMorda(01.10.2023 11:06)
- У меня сначала сама функция, а потом main, в которой эта функция
вызывается. И именно в вызове из main появляется этот ванинг.
Чего-то я не понимаю... - st256(01.10.2023 12:11)
- В тексте только одна-единственная функция? Предупреждение на одну
конкретную функцию? - reZident(01.10.2023 12:28)
- Да, насколько я помню. Кода у меня под руками нет. - st256(01.10.2023 12:34)
- Так может это оптимизатор дурит? Если функция вызывается только
один раз, то компилятор может имплементировать ее прямо в тело
программы. - reZident(01.10.2023 12:43)
- А кстати, как отключается оптимизатор в Keil? По-моему, когда-то у
меня уже были с ним проблемы. - st256(01.10.2023 12:51)
- ХЕЗ. Я не программист. Когда-то работал с MSP430, но программы в
IAR писал. - reZident(01.10.2023 12:55)
- Во-во! В своё время в IAR for MSP430 (в районе 3-4 версий) встречался прикол с выставленной оптимизацией (size) / Ежели объявления void (xx) опускаешь ниже main , то компиляция проходит без предупреждения. А если до main , то с огрехами. Сейчас не знаю. Давно не брался за TI. - SERGHIO(01.10.2023 13:31)
- ХЕЗ. Я не программист. Когда-то работал с MSP430, но программы в
IAR писал. - reZident(01.10.2023 12:55)
- А кстати, как отключается оптимизатор в Keil? По-моему, когда-то у
меня уже были с ним проблемы. - st256(01.10.2023 12:51)
- Так может это оптимизатор дурит? Если функция вызывается только
один раз, то компилятор может имплементировать ее прямо в тело
программы. - reZident(01.10.2023 12:43)
- Да, насколько я помню. Кода у меня под руками нет. - st256(01.10.2023 12:34)
- В тексте только одна-единственная функция? Предупреждение на одну
конкретную функцию? - reZident(01.10.2023 12:28)
- У меня сначала сама функция, а потом main, в которой эта функция
вызывается. И именно в вызове из main появляется этот ванинг.
Чего-то я не понимаю... - st256(01.10.2023 12:11)
- Прототип и функция в одном файле? - Alt@ir(01.10.2023 11:57)
- Это я как бы знаю. Я не знаю, как это сделать! Или не знаю, что
такое прототип, или не знаю куда его перед функцией ставить. - st256(01.10.2023 10:51)
- Тяжёлый случай. Переходите на С++, он такое поймёт :)) - ЫЫyкпy(01.10.2023 10:43)
- Как может С++ понять то, чего даже я не понимаю? Можете по-конкретнее? - st256(01.10.2023 10:50)