_Noreturn doesn't actually exist in C99 - that's a C11ism. Even in C11, it cannot be used on a function pointer type. __attribute__((noreturn)) is a GNU C extension (which we're allowed to use, unlike C11), and is allowed to be placed on function pointer types.