Interestingly, there are 4 separate ways you can declare a main() function without getting type warnings from Clang: https://clang.debian.net/status.php?version=3.6.0&key=WRONG_MAIN_DECLARATION