Hi there.
A coupke of days ago I transitioned from the Arduino IDE (making long programs in there was a nightmare) to VSCode with platformIO.
The problem now (that has happened to me in many other libraries) is that when I compile code that was copied from and Arduino IDE sketch the code compiles OK but it throws errrors on the libraries (which have not been modified by me).
Let me give you an example. Using TinyGSM library and its MQTT example. The code works fine on Arduino IDE and when I compile in platformIO it throws this errrors:
> Executing task in folder test gsm: platformio.exe run <
Processing megaatmega2560 (platform: atmelavr; board: megaatmega2560; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/megaatmega2560.html
PLATFORM: Atmel AVR 1.15.0 > Arduino Mega or Mega 2560 ATmega2560 (Mega 2560)
HARDWARE: ATMEGA2560 16MHz, 8KB RAM, 248KB Flash
PACKAGES: toolchain-atmelavr 1.50400.190710 (5.4.0), framework-arduinoavr 4.1.1
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 16 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <PubSubClient> 2.7
|-- <TinyGSM> 0.9.7
Compiling .pio\build\megaatmega2560\src\main.cpp.o
Archiving .pio\build\megaatmega2560\lib314\libPubSubClient_ID89.a
Compiling .pio\build\megaatmega2560\FrameworkArduino\HardwareSerial2.cpp.o
Compiling .pio\build\megaatmega2560\FrameworkArduino\HardwareSerial3.cpp.o
Compiling .pio\build\megaatmega2560\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\megaatmega2560\FrameworkArduino\PluggableUSB.cpp.o
Compiling .pio\build\megaatmega2560\FrameworkArduino\Print.cpp.o
Compiling .pio\build\megaatmega2560\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\megaatmega2560\FrameworkArduino\Tone.cpp.o
In file included from C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmCommon.h:31:0,
from C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmClientSIM800.h:22,
from C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmClientSIM808.h:13,
from C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmClient.h:24,
from src\main.cpp:95:
C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmFifo.h: In function 'void loop()':
C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmFifo.h:4:1: error: a template declaration cannot appear at block scope
template <class T, unsigned N>
^
In file included from C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmClientSIM800.h:22:0,
from C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmClientSIM808.h:13,
from C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmClient.h:24,
from src\main.cpp:95:
C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmCommon.h:57:11: error: expected identifier before '{' token
namespace {
^
C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmCommon.h:58:3: error: a template declaration cannot appear at block scope
template<typename T>
^
C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmCommon.h:70:3: error: a template declaration cannot appear at block scope
template<typename... Args>
^
C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmCommon.h:83:1: error: a template declaration cannot appear at block scope
template<class T>
^
C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmCommon.h:95:1: error: a template declaration cannot appear at block scope
template<class T>
^
C:\Users\marti\appdata\roaming\spb_data\.platformio\lib\TinyGSM_ID1287\src/TinyGsmCommon.h:142:44: error: a function-definition is not allowed here before '{' token
String TinyGsmDecodeHex7bit(String &instr) {
^
src\main.cpp:84:12: warning: unused variable 'apn' [-Wunused-variable]
const char apn[] = "telefonica.es";
^
src\main.cpp:85:12: warning: unused variable 'user' [-Wunused-variable]
const char user[] = "telefonica";
^
src\main.cpp:86:12: warning: unused variable 'pass' [-Wunused-variable]
const char pass[] = "telefonica";
^
src\main.cpp:89:13: warning: unused variable 'broker' [-Wunused-variable]
const char* broker = "test.mosquitto.org";
^
src\main.cpp:91:13: warning: unused variable 'topicLed' [-Wunused-variable]
const char* topicLed = "GsmClientTest/led";
^
src\main.cpp:92:13: warning: unused variable 'topicInit' [-Wunused-variable]
const char* topicInit = "GsmClientTest/init";
^
src\main.cpp:93:13: warning: unused variable 'topicLedStatus' [-Wunused-variable]
const char* topicLedStatus = "GsmClientTest/ledStatus";
^
src\main.cpp:239:1: error: expected '}' at end of input
}
^
*** [.pio\build\megaatmega2560\src\main.cpp.o] Error 1
=============================================================================================== [ERROR] Took 4.24 seconds ===============================================================================================
The terminal process terminated with exit code: 1
Terminal will be reused by tasks, press any key to close it.
As you can see the errors appear on the library files.