Описание настроек среды Ардуино в файле preferences.txt

AlexeySh
Offline
Зарегистрирован: 16.01.2017

Собственно вопрос, где найти подробное описание настроек среды Ардуино?

Хотел поменять вот эту настройку в файле preferences.txt по умолчанию:

compiler.warning_level=none

на что-нибудь более полезное при отладке программ.

Но не нашел описание какие варианты возможны.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Поставьте all - будут все предупреждения и это хорошо - нечего голову в песок прятать.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012
AlexeySh
Offline
Зарегистрирован: 16.01.2017

ЕвгенийП пишет:

Поставьте all - будут все предупреждения и это хорошо - нечего голову в песок прятать.

Спасибо, попробую.

AlexeySh
Offline
Зарегистрирован: 16.01.2017

Я не нашел в этом файле описание нужной мне настройки предупреждений компилятора.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Ворнинги компилятора можно установить через Файл->Преференцес->Show Verbose Output and Compiler Warnings->All

AlexeySh
Offline
Зарегистрирован: 16.01.2017
 warning: case label value is less than minimum value for type
В конструкции case стоит отрицательное значение "-70" для беззнакового типа переменной. Теперь бы понять как это работало раньше. Или компилятор как то это считал в извращенной манере, или просто игнорировал эту ветку case

warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
какой тут подводный камень, неужели компилятор C не может корректно сравнить знаковое и беззнаковое выражения?

warning: control reaches end of non-void function [-Wreturn-type]
сюда управление вроде бы вообще не должно попадать по логике работы программы, но на всякий случай исправлю.

ЕвгенийП пишет:

Поставьте all - будут все предупреждения и это хорошо - нечего голову в песок прятать.

Еще раз спасибо. Поставил all. Вылезло три предупреждения. Теперь вот думаю, могли ли они влиять на стабильность программы.

Вспомнил ещё раз добрым словом разработчиков Ардуино, которые отключили по умолчанию выдачу всех предупреждений компилятора.

Похоже всем новичкам первым делом надо давать совет включить опцию выдачи всех предупреждений компилятора. Иначе ничего хорошего не будет.

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Про  -70 он нормально обрабатывал, как в стандарте описано. Совпадало с 65466. Можете запустить и проверить.

template <typename T> inline Print & operator << (Print &s, T n) { s.print(n); return s; }

void setup(void) {
	Serial.begin(115200);
	unsigned k = 65466;
	switch(k) {
		case -70:
			Serial << "GOT IT!!!\n";
			break;
		default:
		Serial << "Nothing found :(\n";
			break;
	}
}

void loop(void) {}

Как видите, совпадение найдено.

AlexeySh
Offline
Зарегистрирован: 16.01.2017

только у меня -70 сравнивается со значением переменной типа byte, насколько я понял эквивалентно 0хBA или 186 десятичному числу. Поставил 0хBA.

после того как добавил return 0.0; в последней строке функции, исчезли остальные два предупредения.

теперь осталось протестировать, стабильнее ли стала работать программа.