-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Description
Description
I have a rather complex Arduino project where I use ArduinoJson. When using version 6.19.4 the code compiled without any problems. We have updated now to ArduinoJson 6.21.3 and get build errors. The first build error is "/ArduinoJson/Variant/ConverterImpl.hpp:283:51: error: 'std::string' has not been declared" and then as a result there is a massive number of other errors. The problem can be fixed by including <string>
before ArduinoJson.h, however I believe that the ArduinoJson library should be able to manage its own dependencies.
I propose a fix in the "Reproduction Code" section.
Troubleshooter's report
- The issue happens at compile time
- The error is not in the list
Environment
- Microcontroller: Arduino Due
- Core/Framework: https://github.com/arduino/ArduinoCore-sam, version: 1.6.12
- IDE: VS Code 1.81.1 / PlatformIO Core, version 6.1.11
Reproduction code
/***********************************************/
/* This is a suggestion for fixing the problem */
/* */
/* Modify Configuration.hpp as per below */
/***********************************************/
// Support std::string
#ifndef ARDUINOJSON_ENABLE_STD_STRING
# ifdef __has_include
# if __has_include(<string>) && !defined(min) && !defined(max)
# include <string>
# define ARDUINOJSON_ENABLE_STD_STRING 1
# else
# define ARDUINOJSON_ENABLE_STD_STRING 0
# endif
# else
# ifdef ARDUINO
# define ARDUINOJSON_ENABLE_STD_STRING 0
# else
# define ARDUINOJSON_ENABLE_STD_STRING 1
# endif
# endif
#endif
Remarks
I suggest to do the same for <string_view>
and any other STL type used by ArduinoJson.