C functions for fast IO for competitive programming
On Windows, you'd rather use the console API directly instead of stdio.h. This should increase performance somewhat, since these functions are what getchar etc will end up calling anyhow.

Other issues:


All functions should be declared to take void as parameters, rather than to accept any parameter. If they are properly inlined this should hopefully not have any impact on the program, but in some cases it might mess up the calling convention.
Rather than making a mess with compiler switch #ifdef all over the place, you could in the header file do something like:

#ifdef _WIN32
  #define fast_io_read_char fast_io_read_char_windows
#else
  #define fast_io_read_char fast_io_read_char_linux
#endif


And so on. Then separate the implementation of each function, so that you have one file fastio_windows.c and one fastio_linux.c. You can add both files to linking both no matter, the #ifdef in the header will determine which functions that actually get linked to the binary.
Left shifting the signed type long rev is questionable code - you have to ensure that n is never negative or too large.
Missing #include &lt;stdbool.h&gt; so the code won't compile.
getchar calls incorrectly use char instead of int so the code cannot handle EOF. If you don't intend to handle EOF, then you should still cast the result of getchar() to char - to silence compiler warnings and write self-documenting code that shows that you have considered this.