standard CFLAGS for Makefile

- ensure no unintended exports by using -fvisibility=hidden
- ensure MSVC compatibility by failing on declarations after statements