Arduino používá k překladu GCC a to to má omezeno pouze dostupnou pamětí. (norma říká, že pro C++ ten maximální počet není určen, doporučuje aspoň 16384 a zároveň říká, že to je jen doporučení, které se nebere jako povinné, čili toto je přípustné chování)Jirka píše:Má někdo zjištěno kolik může být v switch (x) { case 0: { } } těch case?
Pokud je to vůbec omezeno jinak než pamětí.
Nicméně podle mě, pokud je těch různých možností pro switch větší než malé množství, je program napsaný nevhodně. Pravděpodobně to je automat s příliš mnoha stavy, do kterých je zbytečně zakódovaná nějaká hodnota, případně se ručně rozděluje něco, co se dá rozdělit malým počtem jednoduchých podmínek (nebo na malý počet intervalů(*) ) a uvnitř nich použít tu hodnotu pro nějaký výpočet.
A prakticky je taky dobré si uvědomit, že kontrolér, který je použitý v "tom Arduinu", má dost málo paměti; velmi častá je ATmega328, do které se vejde 16 kilo = 16384 instrukcí včetně bootloaderu, takže tam těžko půjde vystavět switch s tolika case, a i kdyby jich nebylo až tolik, tak se switch nejspíš přeloží jako posloupnost testů s následným odskokem, takže i vykonávání bude dlouho trvat.
(*) mimochodem, gcc má oproti normě jazyka rozšíření, že jde do case napsat rozsah, např.
case 'A' ... 'H':
(viz zde).