nameof
v0.10.4
ส่วนหัวอย่างเดียว C ++ 17 ไลบรารีให้ชื่อของมาโครและฟังก์ชั่นเพื่อรับชื่อของตัวแปรประเภทฟังก์ชันแมโครและ enum
หากคุณชอบโครงการนี้โปรดพิจารณาบริจาคเงินให้กับหนึ่งในกองทุนที่ช่วยผู้ที่ตกเป็นเหยื่อของสงครามในยูเครน: https://u24.gov.ua
ชื่อของ
// 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>()"ชื่อของ 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"ชื่อของประเภท
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"คุณควรเพิ่มชื่อไฟล์ที่ต้องการ
หากคุณใช้ VCPKG ในโครงการของคุณสำหรับการพึ่งพาภายนอกคุณสามารถใช้แพ็คเกจชื่อของ
หากคุณใช้โคนันเพื่อจัดการการพึ่งพาของคุณเพียงเพิ่ม nameof/xyz ตามความต้องการของโคนันซึ่ง xyz เป็นเวอร์ชันรุ่นที่คุณต้องการใช้
ผู้ใช้ Archlinux สามารถติดตั้ง nameof ของ Package Manager AUR โดยใช้คำสั่งต่อไปนี้: yay -S nameof
หรือคุณสามารถใช้บางอย่างเช่น CPM ซึ่งใช้โมดูล 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.
)ตรวจสอบการอ้างอิงสำหรับแต่ละคุณสมบัติ