@codebrainz all declarations and the definition need to have the same exception specification in C++.
To quote the surprisingly lucid standard clause "If any declaration of a function has an exception-specification that is not a noexcept-specification allowing all exceptions, all declarations, including the definition and any explicit specialization, of that function shall have a compatible exception-specification."
That was the OP wasn't it?
@b4n the standard requires an `extern "c"` function to have a C compatible ABI, and it does not disallow `noexcept` so if the compiler allows `noexcept` then it must not change the ABI. (or the compiler has a bug)