Perpustakaan C ++ 17 saja header memberikan nama makro dan fungsi untuk hanya mendapatkan nama variabel, jenis, fungsi, makro, dan enum.
Jika Anda menyukai proyek ini, silakan pertimbangkan untuk menyumbang ke salah satu dana yang membantu para korban perang di Ukraina: https://u24.gov.ua.
Nama
// 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>()"Nama 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"Nama tipe
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"Anda harus menambahkan nama file yang diperlukan. HPP.
Jika Anda menggunakan VCPKG pada proyek Anda untuk dependensi eksternal, maka Anda dapat menggunakan paket NameOf.
Jika Anda menggunakan Conan untuk mengelola dependensi Anda, hanya tambahkan nameof/xyz ke Conan's wajib Anda, di mana xyz adalah versi rilis yang ingin Anda gunakan.
Pengguna Archlinux dapat menginstal nameof dengan Paket Manajer AUR, menggunakan perintah berikut: yay -S nameof .
Atau, Anda dapat menggunakan sesuatu seperti CPM yang didasarkan pada modul Fetch_Content CMake.
CPMAddPackage(
NAME nameof
GITHUB_REPOSITORY Neargye/nameof
GIT_TAG x.y.z # Where `x.y.z` is the release version you want to use.
)Periksa referensi untuk setiap fitur.