breakpad在C++ 11下編譯錯誤修改
阿新 • • 發佈:2018-12-20
我只用到了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來宣告型別,所以做了相容