Es geht um ein C++ Projekt für den ESP8266 mit Arduino Framework. Ich
suche eine bessere Lösung, um die Warnung "narrowing conversion"
loszuwerden.
1 | class OLED
|
2 | {
|
3 | public:
|
4 | void init();
|
5 | ...
|
6 | private:
|
7 | uint8_t y_size;
|
8 | bool i2c_send(uint8_t byte);
|
9 | ...
|
10 | }
|
11 |
|
12 | bool OLED::i2c_send(uint8_t byte)
|
13 | {
|
14 | ...
|
15 | }
|
16 |
|
17 | void OLED::init()
|
18 | {
|
19 | ...
|
20 | #pragma GCC diagnostic push
|
21 | #pragma GCC diagnostic ignored "-Wnarrowing"
|
22 | i2c_send(y_size-1);
|
23 | #pragma GCC diagnostic pop
|
24 | ...
|
25 | }
|
Ich verstehe Fehlermeldung so, dass y_size-1 im Extremfall -1 ergeben
kann, aber das passt nicht in einen uint8_t. In der Praxis wird das aber
nie passieren, und selbst wenn doch, würde nichts schlimmes passieren.
Gibt es eine elegantere Methode, außer die obige und außer den Datentyp
der Argumentes von i2c_send() zu ändern?