Here is part of a sketch and on line 142 I get a warning of a cast from integer to char*. Two lines up, on line 140 I have the same code and get no warning. Both are uint8_t integers cast to a char*. Mystery!
Code:
133 sensors.requestTemperatures();
134 uint8_t tempC;
135 for (uint8_t i = 0; i < sensors.getDeviceCount(); i++)
136 {
137 tempC = sensors.getTempC(DevAddr[i]); // float > int
138 oledFill(&ssoled, 0, 1);
139 oledWriteString(&ssoled, 0, 0, 0,(char *)"Nr ", FONT_SMALL, 0, 1);
140 oledWriteString(&ssoled, 0, -1, -1,(char *)(i + 1), FONT_SMALL, 0, 1);
141 oledWriteString(&ssoled, 0, -1, -1,(char *)": ", FONT_SMALL, 0, 1);
142 oledWriteString(&ssoled, 0, -1, -1,(char *)(tempC), FONT_SMALL, 0, 1);
143 oledWriteString(&ssoled, 0, -1, -10,(char *)" C", FONT_SMALL, 0, 1);
144 oledWriteString(&ssoled, 0, -1, -10,(char *)223, FONT_SMALL, 0, 1);
145 }
Compiler output:
Compiling .pio\build\esp32dev\src\main.cpp.o
src\main.cpp: In function 'void loop()':
src\main.cpp:142:54: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
oledWriteString(&ssoled, 0, -1, -1,(char *)(tempC), FONT_SMALL, 0, 1);
^
Retrieving maximum program size .pio\build\esp32dev\firmware.elf
ss_oled.cpp:
int oledWriteString(SSOLED *pOLED, int iScroll, int x, int y, char *szMsg, int iSize, int bInvert, int bRender) indent preformatted text by 4 spaces