Open
Description
Describe the problem
Compiler warnings for code from non-.ino
source files are not shown on subsequent sketch compilations.
To reproduce
When someone writes code like this (see below) he will correctly get two identical warnings:
warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
When one compiles it again the warnings will all disappear so the user (me) thinks he is perfectly fine and writing clean code.
FunFact: This will not happen if all code is written to the main (.ino) file.
File DummyClass.h
:
class DummyClass
{
public:
char* getString();
char* getSecondString();
};
File DummyClass.cpp
:
char* DummyClass::getString()
{
return "Some String";
}
char* DummyClass::getSecondString()
{
return "Some other string";
}
File test.ino
:
#include "DummyClass.h"
DummyClass dummy;
void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.println(dummy.getString());
delay(1000);
}
Expected behavior
Compiler warnings are shown every time the sketch is compiled if the code would produce a warning.
Arduino CLI version
Operating system
All
Operating system version
Any
Additional context
Additional reports
- https://forum.arduino.cc/t/arduino-ide-2-0-3-duplicate-tab-page/1084561/5
- https://forum.arduino.cc/t/warning-disappears-after-second-compilation/1139615
- https://forum.arduino.cc/t/bad-behaviour-using-keypad/1231737/9
- https://forum.arduino.cc/t/feature-request-clean-build-option/1291789/9
Related
Issue checklist
- I searched for previous reports in the issue tracker
- I verified the problem still occurs when using the nightly build
- My report contains all necessary details