1. 程式人生 > >breakpad在C++ 11下編譯錯誤修改

breakpad在C++ 11下編譯錯誤修改

我只用到了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來宣告型別,所以做了相容