// We will ignore any warnings that we are using multi-character literals,
// as using them is the whole point of this program
#pragma GCC diagnostics ignored "-Wmultichar"

enum what {
	STOP = 'STOP',
	  GO = '  GO',
	WAIT = 'WAIT'
};

#include <iostream>
static ::std::ostream& debug_print(::std::ostream& os, enum what x) {
	// We reinterpret_cast the values to show the same thing
	// a memory dump would show in the debugger:
	char const* p = reinterpret_cast<char const*>(&x);
	return os << p[3] << p[2] << p[1] << p[0];
}

int main() {
	enum what stop = STOP;
	enum what   go =   GO;
	enum what wait = WAIT;
	
	debug_print(::std::cout << "stop: ", stop) << "\n";
	debug_print(::std::cout << "  go: ",   go) << "\n";
	debug_print(::std::cout << "wait: ", wait) << "\n";
}