#define _GNU_SOURCE
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <fenv.h>

struct somestruct
{
	int foo;
	float bar;
};

int main(void) {
	// Симулируем машинку, которая может в sNaN.
	feenableexcept(FE_INVALID);
	
	// Симулируем нехороший пакет с данными.
	static const uint8_t bad_input[] = {
		0xad, 0xde, 0xad, 0xde, 0xff, 0xff, 0xbf, 0xff,
	};
	
	// Не подозревая о подвохе, декодируем пакет.
	struct somestruct s;
	memcpy(&s, bad_input, sizeof(bad_input));
	
	printf("Successfully parsed `somestruct' from stream.\n");
	fflush(stdout);
	
	s.bar += 0.0f;
	
	printf("foo = %x, bar = %f\n", s.foo, s.bar);
	fflush(stdout);
}
