set_windows_crt_report_mode.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. // -*- C++ -*-
  2. //===----------------------------------------------------------------------===//
  3. //
  4. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  5. // See https://llvm.org/LICENSE.txt for license information.
  6. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #ifndef SUPPORT_SET_WINDOWS_CRT_REPORT_MODE_H
  10. #define SUPPORT_SET_WINDOWS_CRT_REPORT_MODE_H
  11. #ifndef _DEBUG
  12. #error _DEBUG must be defined when using this header
  13. #endif
  14. #ifndef _WIN32
  15. #error This header can only be used when targeting Windows
  16. #endif
  17. #include <crtdbg.h>
  18. // On Windows in debug builds the default assertion handler opens a new dialog
  19. // window which must be dismissed manually by the user. This function overrides
  20. // that setting and instead changes the assertion handler to log to stderr
  21. // instead.
  22. inline int init_crt_report_mode() {
  23. _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_DEBUG);
  24. _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);
  25. _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
  26. return 0;
  27. }
  28. static int init_crt_anchor = init_crt_report_mode();
  29. #endif // SUPPORT_SET_WINDOWS_CRT_REPORT_MODE_H