#include <cstdarg>
#include <cstdint>
#include <cstdlib>
#include <ostream>
#include <new>
#ifndef NO_RETURN_ATTR
  #ifdef __GNUC__
    #define NO_RETURN_ATTR __attribute__ ((noreturn))
  #else // __GNUC__
    #define NO_RETURN_ATTR
  #endif // __GNUC__
#endif // NO_RETURN_ATTR


struct Example {
  void (*f)(uintptr_t, uintptr_t) NO_RETURN_ATTR;
};

extern "C" {

void loop_forever() NO_RETURN_ATTR;

uint8_t normal_return(Example arg, void (*other)(uint8_t) NO_RETURN_ATTR);

} // extern "C"
