这个宏定义是什么意思?不是太理解阿。。。。求助

qiaoranak 2016-08-26 05:34:01
这个宏定义是什么意思?不是太理解阿。。。。求助
...全文
309 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiaoranak 2016-08-30
  • 打赏
  • 举报
回复
引用 3 楼 u010727765 的回复:
这几个宏应该是实现C++的反射,通过用户给的字符串来创建相应的类,以及类的成员函数,看你的代码应该Android里的一些东,java本身带有反射,而C++没有,你可以去百度,搜搜如何实现C++反射具体的学习一下
Thanks,搞定。就是声明和生成模板类,
键盘指板 2016-08-29
  • 打赏
  • 举报
回复
这几个宏应该是实现C++的反射,通过用户给的字符串来创建相应的类,以及类的成员函数,看你的代码应该Android里的一些东,java本身带有反射,而C++没有,你可以去百度,搜搜如何实现C++反射具体的学习一下
paschen 版主 2016-08-27
  • 打赏
  • 举报
回复
VS GCC都可以查看宏展开后的代码
qiaoranak 2016-08-26
  • 打赏
  • 举报
回复
#define DECLARE_META_INTERFACE(INTERFACE)                               \
    static const android::String16 descriptor;                          \
    static android::sp<I##INTERFACE> asInterface(                       \
            const android::sp<android::IBinder>& obj);                  \
    virtual const android::String16& getInterfaceDescriptor() const;    \
    I##INTERFACE();                                                     \
    virtual ~I##INTERFACE();                                            \
#define IMPLEMENT_META_INTERFACE(INTERFACE, NAME)                       \
    const android::String16 I##INTERFACE::descriptor(NAME);             \
    const android::String16&                                            \
            I##INTERFACE::getInterfaceDescriptor() const {              \
        return I##INTERFACE::descriptor;                                \
    }                                                                   \
    android::sp<I##INTERFACE> I##INTERFACE::asInterface(                \
            const android::sp<android::IBinder>& obj)                   \
    {                                                                   \
        android::sp<I##INTERFACE> intr;                                 \
        if (obj != NULL) {                                              \
            intr = static_cast<I##INTERFACE*>(                          \
                obj->queryLocalInterface(                               \
                        I##INTERFACE::descriptor).get());               \
            if (intr == NULL) {                                         \
                intr = new Bp##INTERFACE(obj);                          \
            }                                                           \
        }                                                               \
        return intr;                                                    \
    }                                                                   \
    I##INTERFACE::I##INTERFACE() { }                                    \
    I##INTERFACE::~I##INTERFACE() { }                                   \
#define CHECK_INTERFACE(interface, data, reply)                         \
    if (!(data).checkInterface(this)) { return PERMISSION_DENIED; }     \
1.如何设置全局变量?                            在 .h文件里定义变量,然后在process的HEAD BLOCK 里include这个头文件,就可以使用全局变量了。   2.OPNET中如何更方便的看程序? 1.opnet中的设置:   preferences->editor_prog        2.source insight的设置  :operation->preferences->symbol Lookups->Project symbol path->Add Project to   Path  (添加自己创建一个包含所有opnet model 和 include目录的project)  当然,这个有些不足,就是那个sv,tv,hb等中定义的内容,不能进行关联。     3.OPNET中的函数FIN,FRET以及FOUT都是什么功能?    为了使一个用户定义的函数被执行,该函数必须与一个特殊的堆栈跟踪代码相连。堆栈跟踪技术靠在函数的入口点和出口点插入预处理器宏指令完成(一个函数只有一个入口点,但可以有多个出口点(由C语言的return声明决定))。这些宏指令为:FIN、FOUT和FRET。FIN被插入到函数的入口点,FOUT被插入到函数的出口点,但却不返回任何值,FRET被插入到函数的出口点,返回一个值。注意这些宏指令不需要以分号结束(它们自我包含),FIN的参数中也不需要双引号。    Opnet提供的所有的示例模型都包含了这些宏指令,并且建议用户定义的函数也包含这些宏指令。如果FIN、FOUT、和FRET被正确插入了用户代码中,我们就可以使用op_vuerr来找出程序错误的位置,哪怕是在一个嵌套的模型函数调用中。  

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧