Задний план:
Я делаю библиотеки для своего Arduino и компилирую с помощью Arduino IDE. Я хотел бы поместить в библиотеку код, который будет генерировать предупреждение или ошибку во время компиляции, если в конструкторе класса используются определенные значения.
Пример
У меня есть класс
Classes
в библиотекеschool.h
Классы имеют конструктор
Classes::Classes(byte Time_Slot, int SubjectId);
Time_Slot
обычно 1–10Time_Slot
всегда меньше 51Time_Slot
никогда 0
Могу ли я добавить что-нибудь в свой файл school.h
или school.cpp
, чтобы, если в моем файле Classroom Sketch.ino
.
#include <school.h>
Classes Math(2,0);
Classes English(30,1);
Classes History(0,2);
Classes Science(55,3);
void setup() {...}
void loop(){...}
Выдаст ошибки/предупреждения при компиляции, подобные:
Classes English not within normal bounds Classes Time_slot typically between 1 and 10 inclusive
Classes History invalid, Time_slot must be between 1 and 50
Classes Science invalid, Time_slot must be between 1 and 50
enum class
, чтобы вы могли передать ему только правильное значение - person NathanOliver   schedule 20.08.2018byte
, который может содержать только значения от 1 до 50. - person 463035818_is_not_a_number   schedule 20.08.2018static assert
будет работать для меня, но мне было бы интересно, какие приемы я мог бы использовать для создания предупреждения. - person GentlemanS   schedule 20.08.2018