#pragma once #include #define F(str) (reinterpret_cast(PSTR(str))) #define GF(name, str) \ const char __##name[] PROGMEM = str; \ const auto *name = reinterpret_cast(__##name) namespace detail { // Only used for C++ type safety, because otherwise a PSTR would be indistinguishable from a normal c-string struct FlashString; } // namespace detail