It is very annoying for users if they get mismatched headers and library files. It can lead to very hard-to-debug problems.
To protect against that we can hard-code the version into both rerun.h (#define RERUN_VERSION …) and into a library-defined function (rr_version()). The C++ library can then check that RERUN_VERSION == rr_version before it does anything else.