- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想知道如何定义一个宏来为给定的类名输出其命名空间和类名,格式如下:“Namespace.SubNamespace.ClassName”?
所以写这样的东西:
// MyClass.h
#include <string>
namespace NS {
namespace SNS {
class MyClass {
static std::string str;
};
}
}
//MyClass.cpp
#include <MyClass.h>
using namespace std;
string NS::SNS::MyClass::str = SUPER_MACRO(/*params if needed yet none would be prefered*/);
我想让 str 成为“NS.SNS.MyClass”。如果可能的话,我希望宏有尽可能少的参数(意思是一个或没有)。
或者我想知道这样的事情是否可以使用类似这样的模板来完成:
string NS::SNS::MyClass::str = GetTypeNameFormater<NS::SNS::MyClass>();
如何做这样的事情(使用 boost、STL 并且手头只有 C++03)?
最佳答案
没有标准的方法可以做到这一点。提供范围信息的唯一标准宏是 C99 宏 __func__
。
不过,您可以做的是通过 std::typeinfo
获取符号的名称,然后将其放入特定于编译器的 demangling API 中,然后解析出命名空间。
http://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html举例说明如何做到这一点。这应该适用于 clang 和 OS X。
或者,您可以编写一组宏来定义命名空间和相应的静态字符串,然后从那里将您的字符串组合在一起。
这两个选项都不会特别漂亮。
关于c++ - 是否有可能在编译时得到一个包含命名空间和类名的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325960/
降本手段一招鲜,增效方法吃遍天; 01 互联网行业里; 降本策略千奇百怪,手段却出奇一致;增效方法五花八门,手段更是花里胡哨; 对于企业来说;
有什么方法可以使用 angularjs 中的部分进行代码分组吗? 原因 --- 我的 Controller 包含太多代码。该 Controller 包含了多个方法和大量功能的代码,降低了代码的可读性。
不幸的是,我的数据库的数据模型必须改变,所以我正在寻找最轻松的方式来迁移我的数据。 此时情况如何: create table cargo{ id serial primary key, per
在 QTextEdit 对象中,假设我想知道字符在鼠标光标下的位置。 我会写... void MyQTextEditObject::mousePressEvent(QMouseEvent* mouse
是否可以在 C++ 中返回一个 return 语句或做一些具有类似功能的事情? 例如,如果代码中有几个函数将指针作为输入,并且每个函数都检查指针是否为 nullptr,这将很方便。如果它是一个 nul
我的 PC 上有一个控制台应用程序,它是 signalR 服务器。 我有一个 html 页面,它是互联网上的 signalR 客户端。但我尝试连接服务器,但我有一个错误的请求 400 错误。如果服务器
我想将应用程序作为后台进程运行。当点击应用程序图标时,它不会显示任何 View ,只会启动后台进程。 最佳答案 对于 iOS 这是不可能的,但是对于 android,react native 有 he
我知道有(昂贵的)框架可以让你在 VS C# 中编写 android 应用程序并将其编译为 android apk。 我也知道,可以在 VS 中编写 Java 应用程序(link)。 是否有可能,甚至
我在做: can :manage, :all if user.role == 'admin' can :approve, Anuncio do |anuncio| anuncio.try(:apr
我是一名优秀的程序员,十分优秀!