What is the meaning of this

the code i have compiles fine, but i got a new laptop today fresh install of arduino with this weird new ide and all the sudden ime getting all these errors about some min call... anyone have any pointers?

In file included from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\stl_algo.h:60,
                 from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\functional:65,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\Updater\src/Updater.h:25,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/BearSSLHelpers.h:27,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecureBearSSL.h:29,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecure.h:24,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFi.h:11,
                 from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:33:
c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\algorithmfwd.h:425:41: error: macro "min" passed 3 arguments, but takes just 2
  425 |     min(const _Tp&, const _Tp&, _Compare);
      |                                         ^
In file included from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:31:
c:\Users\LocalAdmin\Documents\libraries\Streaming\src/Streaming.h:74: note: macro "min" defined here
   74 | #define min(a,b) ((a)<(b)?(a):(b))
      | 
In file included from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\stl_algo.h:60,
                 from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\functional:65,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\Updater\src/Updater.h:25,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/BearSSLHelpers.h:27,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecureBearSSL.h:29,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecure.h:24,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFi.h:11,
                 from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:33:
c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\algorithmfwd.h:453:30: error: macro "min" requires 2 arguments, but only 1 given
  453 |     min(initializer_list<_Tp>);
      |                              ^
In file included from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:31:
c:\Users\LocalAdmin\Documents\libraries\Streaming\src/Streaming.h:74: note: macro "min" defined here
   74 | #define min(a,b) ((a)<(b)?(a):(b))
      | 
In file included from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\stl_algo.h:66,
                 from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\functional:65,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\Updater\src/Updater.h:25,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/BearSSLHelpers.h:27,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecureBearSSL.h:29,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecure.h:24,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFi.h:11,
                 from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:33:
c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\uniform_int_dist.h:173:11: error: macro "min" requires 2 arguments, but only 1 given
  173 |       min() const
      |           ^
In file included from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:31:
c:\Users\LocalAdmin\Documents\libraries\Streaming\src/Streaming.h:74: note: macro "min" defined here
   74 | #define min(a,b) ((a)<(b)?(a):(b))
      | 
In file included from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\stl_algo.h:66,
                 from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\functional:65,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\Updater\src/Updater.h:25,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/BearSSLHelpers.h:27,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecureBearSSL.h:29,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecure.h:24,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFi.h:11,
                 from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:33:
c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\uniform_int_dist.h:251:40: error: macro "min" requires 2 arguments, but only 1 given
  251 |  const __uctype __urngmin = __urng.min();
      |                                        ^
In file included from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:31:
c:\Users\LocalAdmin\Documents\libraries\Streaming\src/Streaming.h:74: note: macro "min" defined here
   74 | #define min(a,b) ((a)<(b)?(a):(b))
      | 
In file included from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\stl_algo.h:66,
                 from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\functional:65,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\Updater\src/Updater.h:25,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/BearSSLHelpers.h:27,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecureBearSSL.h:29,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecure.h:24,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFi.h:11,
                 from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:33:
c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\uniform_int_dist.h:320:40: error: macro "min" requires 2 arguments, but only 1 given
  320 |  const __uctype __urngmin = __urng.min();
      |                                        ^
In file included from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:31:
c:\Users\LocalAdmin\Documents\libraries\Streaming\src/Streaming.h:74: note: macro "min" defined here
   74 | #define min(a,b) ((a)<(b)?(a):(b))
      | 
In file included from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\functional:65,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\Updater\src/Updater.h:25,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/BearSSLHelpers.h:27,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecureBearSSL.h:29,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecure.h:24,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFi.h:11,
                 from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:33:
c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\stl_algo.h:3473:34: error: macro "min" requires 2 arguments, but only 1 given
 3473 |     min(initializer_list<_Tp> __l)
      |                                  ^
In file included from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:31:
c:\Users\LocalAdmin\Documents\libraries\Streaming\src/Streaming.h:74: note: macro "min" defined here
   74 | #define min(a,b) ((a)<(b)?(a):(b))
      | 
In file included from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\functional:65,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\Updater\src/Updater.h:25,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/BearSSLHelpers.h:27,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecureBearSSL.h:29,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecure.h:24,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFi.h:11,
                 from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:33:
c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\stl_algo.h:3776:57: error: macro "min" requires 2 arguments, but only 1 given
 3776 |       const __uc_type __urngrange = __g.max() - __g.min();
      |                                                         ^
In file included from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:31:
c:\Users\LocalAdmin\Documents\libraries\Streaming\src/Streaming.h:74: note: macro "min" defined here
   74 | #define min(a,b) ((a)<(b)?(a):(b))
      | 
In file included from c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\functional:65,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\Updater\src/Updater.h:25,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/BearSSLHelpers.h:27,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecureBearSSL.h:29,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFiClientSecure.h:24,
                 from C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\WiFi\src/WiFi.h:11,
                 from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:33:
c:\users\localadmin\appdata\local\arduino15\packages\rp2040\tools\pqt-gcc\1.4.0-c-0196c06\arm-none-eabi\include\c++\10.3.0\bits\stl_algo.h:5815:57: error: macro "min" requires 2 arguments, but only 1 given
 5815 |       const __uc_type __urngrange = __g.max() - __g.min();
      |                                                         ^
In file included from D:\Arduino\Hypervisor_VisualMenuINTEGRATION\Hypervisor_VisualMenuINTEGRATION.ino:31:
c:\Users\LocalAdmin\Documents\libraries\Streaming\src/Streaming.h:74: note: macro "min" defined here
   74 | #define min(a,b) ((a)<(b)?(a):(b))
      | 
Multiple libraries were found for "SdFat.h"
  Used: C:\Users\LocalAdmin\Documents\libraries\SdFat
  Not used: C:\Users\LocalAdmin\AppData\Local\Arduino15\packages\rp2040\hardware\rp2040\2.6.0\libraries\ESP8266SdFat
exit status 1

Compilation error: exit status 1

what is "_Compare"?
guessing you didn't write this code

This file or library seems to use a non-standard version of the min() macro or replacement function. Try to get an older and compatible version of that library.

This Streaming library defines a macro with the generic name min. This is bound to cause issues and should be reported as a bug to the author.

As a temporary work-around, you could either include this library last, or manually #undef min after including it.

2 Likes

Blockquote
what is "_Compare"?
guessing you didn't write this code

I did write the hypervisor code .

Blockquote
This file or library seems to use a non-standard version of the min() macro or replacement function. Try to get an older and compatible version of that library.

The hypervisor ino is not a library so there is no older version as well as the code indicated at the error lines does not use the min or any min function I'm not ranging anywhere in the code .

Blockquote
This Streaming library defines a macro with the generic name min. This is bound to cause issues and should be reported as a bug to the author.

As a temporary work-around, you could either include this library last, or manually #undef min after including it.

The min error is spanning several different things , from my original file to several other libraries , this has to be some sort of compiler bug ... Maybe something wrong with windows version of gcc?

Then you'll have to fix the Streaming library or use a higher quality library instead.

this has to be some sort of compiler bug ...

It's not a compiler bug, the reason it shows up in GCC's standard library headers is that macros defined by a header file are visible to other header files that are included further down.
(Let's hope we get widespread module support soon.)

Moral of the story:

1 Like

The hypervisor code is (probably) expecting "min" to be a function with local scope from its class, but min is defined elsewhere as a preprocessor macro that is replaced as text long before 'scope' becomes a thing.
So the above would become const __uctype __urngmin = __urng.((a)<(b)?(a):(b)) , if it didn't error out for lack of sufficient arguments first.

Arduino.h also contains a macro definition for min(), so Streaming.h shouldn't get too much blame. (this is a long-complained-about problem, BTW.) Solve it by not using the "effectively-reserved name min" in your class.

i love this forum all these shining happy people who love to be so helpful...

now i will be the troll:

for 1:

min is not used in my code. possibly in incorporated libs, but i have not personally used i in this prototyped project.

2: if something is of some sort of protected class, perhaps there should be a warning at compile time...

and 3: most importantly STREAMING was to blame, rolled it back 3 minor revisions before it was actually able to compile. made separate bug issue over there at : GitHub - janelia-arduino/Streaming: Streaming C++-style Output with Operator <<

thanks for the help where streaming was mentioned.

It's not "protected", it's just effectively unusable. The compiler might know enough to give you a warning, but the error that you got is from the pre-processor, which is not nearly so smart.

The rp2040 core has a better definition of min() than the old AVR core. If you try to compile your code for an AVR, you'll have to go much further to fix things...

#ifdef __cplusplus
  template<class T, class L> 
  auto min(const T& a, const L& b) -> decltype((b < a) ? b : a)
  {
    return (b < a) ? b : a;
  }
#else
#ifndef min
#define min(a,b) \
   ({ __typeof__ (a) _a = (a); \
       __typeof__ (b) _b = (b); \
     _a < _b ? _a : _b; })
#endif

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.