Portables Makro, das parametrisierte Benutzerdefinitionsliterale deklariertC++

Programme in C++. Entwicklerforum
Guest
 Portables Makro, das parametrisierte Benutzerdefinitionsliterale deklariert

Post by Guest »

Ich möchte ein C-Präprozessormakro mit Parameter N definieren, das eine Deklaration für ein benutzerdefiniertes C++-Literal mit dem Suffix _uN erstellt.

Code: Select all

#define DEFINE_LITERAL(N) int operator""_u##N(const char* s);

DEFINE_LITERAL(128)
Der obige Versuch ist kein streng gültiges C11-Präprozessormakro. Bei Verwendung des MSVC-Compilers mit dem Flag /Zc:preprocessor heißt es:

Code: Select all

warning C5103: pasting '""_u' and '128' does not result in a valid preprocessing token
Die Problemumgehung für den MSVC-Compiler besteht darin, die Token durch Leerzeichen zu trennen: Operator"" _u##N. Dies ist jedoch aufgrund des CWG 2521 nicht mit C++23 kompatibel. Der Clang-Compiler warnt standardmäßig davor:

Code: Select all

warning: identifier '_u128' preceded by whitespace in a literal operator declaration is deprecated [-Wdeprecated-literal-operator]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post