Wie erkenne ich C ++ 20 -Kompilierungsmodus?C++

Programme in C++. Entwicklerforum
Anonymous
 Wie erkenne ich C ++ 20 -Kompilierungsmodus?

Post by Anonymous »

Beim Kompilieren meines Programms mit einer aktuellen Version der OpenVDB -Bibliothek von Clang im C ++ 20 -Modus erhalte ich den Fehler: < /p>

Code: Select all

error: use of the 'assume' attribute is a C++23 extension
< /code>
Ich sehe, dass es auf das makro openvdb_assume ist bedingt definiert als (vereinfacht): < /p>
zurückzuführen#ifdef __has_cpp_attribute
#if __has_cpp_attribute(assume) >= 202207L
#define OPENVDB_ASSUME(...) [[assume(__VA_ARGS__)]]
#endif
#endif
#ifndef OPENVDB_ASSUME
#define OPENVDB_ASSUME(...) __builtin_assume(__VA_ARGS__)
#endif
Trotz der Bedingung __has_cpp_attribute (angenommen)> = 202207l erweitert das Makro im C ++ 20 -Modus immer noch in [[Annahme]] . Online -Demo: https://gcc.godbolt.org/z/fey5gwc9p
Wie man die Bedingung ändern muss, um sie zu verhindern, und c ++ 20 kompatible __builtin_assume (__ va_args __) Voraussetzung stattdessen stattdessen? Stattdessen?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post