user48730: I'm coding a library which handles sleep procedures.
Since I'm using both ESP826 and ESP32, which uses different sleep commands ( and WiFi ), I'm looking for a way to detect the MCU, while NOT using a boolean flag that indicates so.
Guy

user70020: I take this to mean that you do not want to have to ask the user of the code to configure a boolean flag.
The ESP8266 Arduino package provides -DARDUINO_ARCH_ESP8266 -DESP8266
command-line options these while calling g++.  These effectively #define feature test macros as though they were at the beginning of the source code.
For ESP32 it does likewise with -DARDUINO_ARCH_ESP32 -DESP32
You could perform tests in your code such as:
#if defined (ARDUINO_ARCH_ESP8266)
// do one thing
#elif defined(ESP32)
// do another
#else
#error Architecture unrecognized by this code.
#endif

There are likely also macros like these that are predefined by the xtensa g++ compiler.

48730: <p>I'm coding a library which handles sleep procedures.</p>
<p>Since I'm using both ESP826 and ESP32, which uses different sleep commands ( and WiFi ), I'm looking for a way to detect the MCU, while NOT using a boolean flag that indicates so.</p>
<p>Guy</p>
 70020: <p>I take this to mean that you do not want to have to ask <em>the user</em> of the code to configure a boolean flag.</p>
<p>The ESP8266 Arduino package provides <code>-DARDUINO_ARCH_ESP8266 -DESP8266</code>
command-line options these while calling g++.  These effectively <code>#define</code> feature test macros as though they were at the beginning of the source code.</p>
<p>For ESP32 it does likewise with <code>-DARDUINO_ARCH_ESP32 -DESP32</code></p>
<p>You could perform tests in your code such as:</p>
<pre class="lang-cpp prettyprint-override"><code>#if defined (ARDUINO_ARCH_ESP8266)
// do one thing
#elif defined(ESP32)
// do another
#else
#error Architecture unrecognized by this code.
#endif
</code></pre>
<p>There are likely also macros like these that are predefined by the xtensa g++ compiler.</p>
