Отключить предупреждения компилятора
- Войдите на сайт для отправки комментариев
Втр, 09/04/2019 - 13:26
Доброго времени.
Проект состоит из нескольких *.ino, *.h, *.cpp. В зависимости от выбранной платы объявляется или не объявляется директива #define __2560__. Один ino-файл содержит отладочные функции типа:
void serial_ui16(uint16_t &ui16) { #ifdef __2560__ <....> #endif }
При наличии #define __2560__ все пушисто. При остутствии компилятор начинает сыпать предупреждения типа:
warning: unused parameter 'ui16' [-Wunused-parameter] void serial_ui16(uint16_t &ui16) {
Попытка использовать #pragma warning(...) комплятором игнорируется:
warning: ignoring #pragma warning [-Wunknown-pragmas]
https://www.arduino.cc похоже не знает о "pragma". Как, если возможно, отключить предупреждения только в одном ino-файле, при условии, что в настройках IDE стоит Compiler warnings - All?
P.S.
Исключить использование #ifdef __2560__ - крайний вариант.
Feofan, отключать предупреждение - очень плохая идея. Разве что его можно отключить локально (только для этого места). Т.е. это здесь оно только глаза мозолит, а в другом месте - выручит.
Чтобы избавиться от него здесь и сейчас есть 100500 способов. Выбирайте (или свои добавляйте)
Можно отключить проверку именно этого параметра навсегда ;))
П.С.
Feofan, а ваш дефайн, он отличный от ARDUINO_AVR_MEGA2560? Столку немножко сбивает.
ЕвгенийП
Я зациклился на директивах препроцессора. Хотя нечто подобное #3 в голове мелькало. Спасибо.
DetSimen
Читал со смартфона и не запомнил. Все было неправильно?
Алексей.
Оттуда ноги и растут. На Mega2560 отлаживаю. В реальности ProMini, на Serial HС-05. Отключать вывод отладочной инфрмации надо только для ProMini.
ЕвгенийП
Я зациклился на директивах препроцессора. Хотя нечто подобное #3 в голове мелькало. Спасибо.
DetSimen
Читал со смартфона и не запомнил. Все было неправильно?
У ЕвгенияПетровича правильнее
Всем СПАСИБО! Глазу приятнее вариант #1. Все срослось.
Всем СПАСИБО! Глазу приятнее вариант #1. Все срослось.
Я для таких целей определяю:
И потом тупо пишу в начале функции
Директиву с именем (для примера) SOME_CONDITION можно определять, а можно - не определять, можно определять только для дебаг-режима, для нескольких плат сразу и т.п. Пмсм, в одном месте - удобнее, и избавляет от мусорных #ifdef в коде.
Всем СПАСИБО! Глазу приятнее вариант #1. Все срослось.
А то #else нафига? Конструкция "(void)ui16;" реально не делает ничего и ни в какой код не преобразуется - её можно ставить без всяких else - они никому не мешает. Но она формально "использует" параметр.
В реальности без else.