google-breakpad在C++ 11下编译错误修改

作者: NickYang 分类: 技术文章,程序开发 发布时间: 2014-09-29 14:23

我只用到了exception_handler模块,暂时还未用到Server模块,因为用到了C++ 11的一些特性,而google-breadpad还没有C++11版本,所以做了一些修改,集中在类型定义处

1.

typedef typeof(((struct user*) 0)->u_debugreg[0]) debugreg_t;

修改为

#if __cplusplus > 199711L
typedef std::remove_reference<decltype(((struct user*) 0)->u_debugreg[0])>::type debugreg_t;
#else
typedef typeof(((struct user*) 0)->u_debugreg[0]) debugreg_t;
#endif

 

2.

typedef typeof(((elf_aux_entry*) 0)->a_un.a_val) elf_aux_val_t;

修改为

#if __cplusplus > 199711L
typedef decltype(((elf_aux_entry*) 0)->a_un.a_val) elf_aux_val_t;
#else
typedef typeof(((elf_aux_entry*) 0)->a_un.a_val) elf_aux_val_t;
#endif

 

因C++11中用了decltype来声明类型,所以做了兼容

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

6条评论
  • 成都SEO

    2014 年 10 月 17 日 23:09

    C++俺忘的差不多了,还给老师了

    潜水 Chrome浏览器 Windows 7
  • IT疯狂女

    2014 年 10 月 12 日 16:47

    来看看博主

    潜水 Chrome浏览器 Windows 7
  • 花开花落

    2014 年 10 月 3 日 23:32

    博客内容丰富,深刻!学习了!

    潜水 Chrome浏览器 Windows 7 x64 Edition
  • Yu

    2014 年 10 月 1 日 22:55

    google-breakpad 是干啥用的啊,能拦截segment falt 么?

    神话 Chrome浏览器 Mac OS X
    1. Yu

      2014 年 10 月 1 日 22:56

      segment fault … 手误

      神话 Chrome浏览器 Mac OS X
      1. eliteYang

        2014 年 10 月 5 日 18:25

        可以抓到的

        神话 Chrome浏览器 Windows 7 x64 Edition

发表评论

电子邮件地址不会被公开。 必填项已用*标注