类名 FUNCTION 的宏等效
开发人员经常遇到需要使用以下方式访问当前函数名称的情况: C 中的 FUNCTION 宏。然而,用于访问类名的类似宏并不是立即显而易见的。
替代解决方案
虽然不存在与 FUNCTION 完全相同的内容类名、替代方法可以提供此信息。可以使用 typeid(*this).name() ,但它在静态方法调用中存在限制。
PRETTY_FUNCTION 和第三方宏
PRETTY_FUNCTION 宏返回函数和类名称。但是,它的使用特定于 GCC 编译器。
还可以利用第三方宏,例如 METHOD_NAME 和 CLASS_NAME 宏来提取类和方法名称,如下面的示例代码所示:
inline std::string methodName(const std::string& prettyFunction) { ... } #define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__) ... inline std::string className(const std::string& prettyFunction) { ... } #define __CLASS_NAME__ className(__PRETTY_FUNCTION__)
这些宏处理从 __PRETTY_FUNCTION__ 解析类和方法名称的复杂性,包括没有类的情况。
结论
虽然 C 缺少与 FUNCTION 直接等效的类名,但 PRETTY_FUNCTION 和第三方宏提供了访问这两种方法的可行替代方案和类名,保证代码在各种场景下的可维护性和可读性。
以上是如何获取 C 中当前的类名?的详细内容。更多信息请关注PHP中文网其他相关文章!