Compiling the following code gives a warning about unreachable code, so it's clear that msvc doesn't simply ignore the directive. I'm not saying that anyone suggested otherwise, I just wanted to know for sure. #include <stdio.h> #include <stdlib.h> void (*exit_fun)(int) = exit; void __declspec(noreturn) die(void); void die(void) { exit_fun(1); } int main(void) { printf("hello!\n"); die(); printf("world!\n"); } On Mon, Sep 14, 2009 at 2:03 PM, Jeff King <peff@xxxxxxxx> wrote: > I think I am fine doing it either way. The NORETURN_PTR thing is a bit > more elegant to me, but that is maybe just my gcc snobiness. We > shouldn't have to change our code to accomodate MSVC's crappy noreturn > handling. ;) First of all, MSVC is not the only compiler that behaves this way. In fact, GCC the only compiler I've found that behaves this way (but I must admit, I only tested 4 different compilers, one of which (Comeau) does not support noreturn at all AFAICT). That behavior might be crappy, but it's not "MSVC's crappy noreturn handling" - it's "non-GCC's crappy noreturn handling" :P The arguments against each solution I see are these: - abort() gives a run-time error instead of a compile-time warning, so breakage is trickier to detect (on GCC, which seems to be the target compiler for the vast majority of git-developers). - NORETURN_PTR might be bit big of a hammer for a small problem, as it "pollutes" the whole git source-tree instead of just usage.c. Anyway, I don't care much what solution we pick. Either should work, and if someone has strong preference, I'm OK with it. -- Erik "kusma" Faye-Lund kusmabite@xxxxxxxxx (+47) 986 59 656 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html