Nur-Header-C ++ 17-Bibliothek enthält Namen von Makros und Funktionen, um einfach den Namen einer Variablen, Typ, Funktion, Makro und Enum zu erhalten.
Wenn Ihnen dieses Projekt gefällt, sollten Sie an eines der Mittel spenden, die den Opfern des Krieges in der Ukraine helfen: https://u24.gov.ua.
Name
// Name of variable.
NAMEOF (somevar) -> "somevar"
// Name of member variable.
NAMEOF(person.address.zip_code) -> "zip_code"
// Name of function.
NAMEOF(foo< int , float >()) -> "foo"
// Name of member function.
NAMEOF(somevar.some_method()) -> "some_method"
NAMEOF(somevar.some_method< int >()) -> "some_method"
// Name of macro.
NAMEOF(__LINE__) -> "__LINE__"
NAMEOF(NAMEOF(structvar)) -> "NAMEOF"
// Obtains full name of variable, function, macro.
NAMEOF_FULL(somevar.some_method< int >()) -> "some_method<int>"
// Obtains raw name of variable, function, macro.
NAMEOF_RAW(somevar.some_method< int >()) -> "somevar.some_method<int>()"Name von Enum
enum class Color { RED = 1 , BLUE = 2 , GREEN = 4 };
auto color = Color::RED;
// Name of enum variable.
NAMEOF_ENUM (color) -> "RED"
nameof::nameof_enum(color) -> "RED"
// Static storage enum variable to string.
// This version is much lighter on the compile times and is not restricted to the enum_range limitation.
NAMEOF_ENUM_CONST(Color::GREEN) -> "GREEN"
nameof::nameof_enum<Color::GREEN>() -> "GREEN"
// Enum flags variable to string.
NAMEOF_ENUM_FLAG(Color::GREEN | Color::BLUE) -> "GREEN|BLUE"
nameof::nameof_enum_flag<Color::GREEN | Color::BLUE>() -> "GREEN|BLUE"
// Obtains name of enum variable or default value if enum variable out of range.
NAMEOF_ENUM_OR(Color::GREEN) -> "GREEN"
NAMEOF_ENUM_OR((Color)0, "none") -> "none"Name des Typs
const my::detail::SomeClass< int >& var_ref = var;
// Name of variable type.
NAMEOF_TYPE_EXPR (var_ref) -> "my::detail::SomeClass<int>"
nameof::nameof_type<decltype(var_ref)>() -> "my::detail::SomeClass<int>"
NAMEOF_FULL_TYPE_EXPR(var_ref) -> " const my::detail::SomeClass<int>&"
nameof::nameof_full_type<decltype(var_ref)>() -> " const my::detail::SomeClass<int>&"
NAMEOF_SHORT_TYPE_EXPR(var_ref) -> "SomeClass"
nameof::nameof_short_type<decltype(var_ref)>() -> "SomeClass"
using T = const my::detail::SomeClass<int>&;
// Name of type.
NAMEOF_TYPE (T) ->"my::detail::SomeClass<int>"
nameof::nameof_type<T>() -> "my::detail::SomeClass<int>"
NAMEOF_FULL_TYPE(T) -> " const my::detail::SomeClass<int>&"
nameof::nameof_full_type<T>() -> " const my::detail::SomeClass<int>&"
NAMEOF_SHORT_TYPE(T) -> "SomeClass"
nameof::nameof_short_type<T>() -> "SomeClass"
my::detail::Base* ptr = new my::detail::Derived();
// Name of type, using rtti.
NAMEOF_TYPE_RTTI (*ptr) -> "my::detail::Derived"
NAMEOF_FULL_TYPE_RTTI(*ptr) -> "volatile const my::detail::Derived&"
NAMEOF_SHORT_TYPE_RTTI(*ptr) -> "Derived"
struct A {
int this_is_the_name;
};
// Obtains name of member.
NAMEOF_MEMBER (&A::this_is_the_name) -> "this_is_the_name"
nameof::nameof_member(&A::this_is_the_name) -> "this_is_the_name"
int someglobalvariable = 0;
// Obtains name of a function, a global or class static variable.
NAMEOF_POINTER (&someglobalconstvariable) == "someglobalconstvariable"
nameof::nameof_pointer(&someglobalconstvariable) == "someglobalconstvariable"
constexpr auto global_ptr = &someglobalvariable;
NAMEOF_POINTER (global_ptr) == "someglobalconstvariable"
nameof::nameof_pointer(global_ptr) == "someglobalconstvariable"Sie sollten den erforderlichen Dateinamen.hpp hinzufügen.
Wenn Sie VCPKG für Ihr Projekt für externe Abhängigkeiten verwenden, können Sie das Namenspaket verwenden.
Wenn Sie Conan zum Verwalten Ihrer Abhängigkeiten verwenden, fügen Sie den erforderlichen nameof/xyz der Veröffentlichung von xyz hinzu.
Archlinux -Benutzer können nameof von Package Manager AUR unter Verwendung des folgenden Befehls installieren: yay -S nameof .
Alternativ können Sie so etwas wie CPM verwenden, das auf dem Fetch_Content -Modul von CMake basiert.
CPMAddPackage(
NAME nameof
GITHUB_REPOSITORY Neargye/nameof
GIT_TAG x.y.z # Where `x.y.z` is the release version you want to use.
)Überprüfen Sie die Referenz für jede Funktion.