Formatovany tisk pro 8bit

Pavel Hudeček edizon na seznam.cz
Pondělí Duben 22 11:13:43 CEST 2024


Zajímavé je, jak různé konstrukce můžou vést k různé délce kódu.

Rozdíl 500 B trochu překvapil, ale OK. Použito je long a double.
Vlastně bych to čekal spíš naopak, když se u té delší verze nepředává 
val. Ale chápu, že tohle asi snadno sežere nějaká optimalizace, když se 
v val nic nedělá.

Nějaké nápady na další konstrukce, které by mohly být menší?

Dost ale překvapilo 30 B u *nepoužitých funkcí* test.
WTF?

PH


template <typename T> class clDetTyp { // ===========================
public:
     //const char det() const;
      char det(unsigned int x)  {return 'u';}
      char det(int x)  {return 'i';}
      char det(unsigned long x)  {return 'U';}
      char det(long x)  {return 'L';}
      char det(float x)  {return 'f';}
      char det(double x)  {return 'd';}
};

/*// tohle bylo delsi o ~500B, const nemají vliv
template <> const char clDetTyp<unsigned int>::det() const { return 'u';}
template <> const char clDetTyp<int>::det() const { return 'i';}
template <> const char clDetTyp<long>::det() const { return 'L';}
template <> const char clDetTyp<float>::det() const { return 'f';}
template <> const char clDetTyp<double>::det() const { return 'd';}*/

template<typename T>
void uartSendF(const char *t, T val, uint8_t mist) { // =============
     clDetTyp<T> d;
     if (d.det(val)=='f' || d.det(val)=='d') {
         float m = 1.0;
         for (uint8_t n=0; n<mist; n++) m*=10.0;
         uartSendF_(t, static_cast<long>(val*m), mist);
     } else if (d.det(val)=='L') uartSendF_(t, val, mist);
     else uartSendF_(t, static_cast<long>(val), mist);
}

/*// tyhhle funkce nejsou použitý, ale zakomentování ušetří 30B 
(uartSendF s jedním PSTR se používá i jinde)
// Změna délky PSTR v nich nevede ke změně rozdílu zabrané flash
const void test(int x) {
     uartSendF(PSTR("test: int\r\n"));
}
void test(char x) {
     uartSendF(PSTR("test: char\r\n"));
}*/


------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20240422/5fd7c898/attachment.htm>


Další informace o konferenci Hw-list