Rework how warning suppression in macros is done

Previously, each warning suppression was self-contained, with its
own pair of `SUPPRESS_X_WARNING` and `UNSUPPRESS_X_WARNING` macros.
This had the obvious advantage of being self-containing, but it
also meant that if we needed to suppress more than one warning
in a single place, then we would manipulate the compiler's warning
state multiple times, even though logically we would only need one
layer.

The new way of suppressing warnings in macros is to push compiler's
warning state with `CATCH_INTERNAL_START_WARNINGS_SUPPRESSION` macro,
then disable whatever macros we need with the
`CATCH_INTERNAL_SUPPRESS_X_WARNINGS` macro, and then return to the
previous state using `CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION`.
9 files changed
tree: a2d90be167769ef9bb7b0cd32d431eeb94eebc05
  1. .conan/
  2. .github/
  3. artwork/
  4. CMake/
  5. contrib/
  6. docs/
  7. examples/
  8. include/
  9. misc/
  10. projects/
  11. scripts/
  12. single_include/
  13. third_party/
  14. .gitattributes
  15. .gitignore
  16. .travis.yml
  17. appveyor.yml
  18. CMakeLists.txt
  19. CODE_OF_CONDUCT.md
  20. codecov.yml
  21. conanfile.py
  22. LICENSE.txt
  23. README.md
README.md

catch logo

Github Releases Build Status Build status codecov Try online Join the chat in Discord: https://discord.gg/4CWS9zD

The latest version of the single header can be downloaded directly using this link

Catch2 is released!

If you've been using an earlier version of Catch, please see the Breaking Changes section of the release notes before moving to Catch2. You might also like to read this blog post for more details.

What's the Catch?

Catch2 is a multi-paradigm test framework for C++. which also supports Objective-C (and maybe C). It is primarily distributed as a single header file, although certain extensions may require additional headers.

How to use it

This documentation comprises these three parts:

More