Ошибка с пользовательским исключением в модуле C++ (конфликтующее определение __cxa_throw)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка с пользовательским исключением в модуле C++ (конфликтующее определение __cxa_throw)

Сообщение Anonymous »

При создании специального исключения в модуле C++ я получаю следующую ошибку:
C:/Sync/Engine/Chorus/Base/win_9x.cpp:600:59: error: conflicting declaration of C function 'void __cxa_throw(void*, void*, void (__attribute__((thiscall)) *)(void*))'
600 | throw Crash(Win9xErrorCode::BAD_MAIN_CLASS);
| ^
compilation terminated due to -Wfatal-errors.

Я использую версию G++ MSYS, версия 14.1.0.
Это известная (нереализованная) функция или это может быть что-то в моем коде?
/>Вот упрощенная версия объявления (... — это фрагмент кода):
export module Error;

...

enum class ErrorType: uint8_t {
...
};
export enum class Win9xErrorCode: uint16_t {
...
};
export enum class WinXPErrorCode: uint16_t {
...
};

export class Crash: public std::exception {
public:
Crash(Win9xErrorCode crashCode) noexcept: code(crashCode), type(ErrorType::WIN9X) { }
Crash(WinXPErrorCode crashCode) noexcept: code(crashCode), type(ErrorType::WINXP) { }

private:
std::variant code;
ErrorType type;
};

Для справки: код, который срабатывает, находится не в модуле:
void setupMainWindow(...) {
WNDCLASSEX graphicsWindowClass = {
...
};
if(!RegisterClassEx(&graphicsWindowClass)) {
throw Crash(Win9xErrorCode::BAD_MAIN_CLASS);
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... -cxa-throw
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»