Good question ... I don't have an answer to that ;-)
Your code still results in the same error for me: fatal error: EXTERN.h: No such file or directory.
Looks like the "-iquote" that my Inline-C-0.81 invokes is stuffing things up.
UPDATE: No, it has nothing to do with "-iquote". Turns out that when I switched to I-C-0.76 I also switched to EU-MM-7.04, and the problem I'm facing is due solely to a change that occurs in EU::MM some time between 7.0401 (which is fine) and 7.1001 (which breaks Inline::C). I'll investigate further when I get a chance and file a bug report if warranted.
What version of Inline::C are you running ? When I switch to Inline-C-0.76, your script works fine - as does mine if I replace the incorrect SV * foo(... with void foo(....
But now I'm puzzled as to the output we get for printf("***%s***\n", MY_FORMAT);
The quotes either side of %.17e are apparently missing from MY_FORMAT. So how does printf(MY_FORMAT, sqrt(2.0)) even compile ?
Can you explain that ?
BTW, seems that my problem with finding a correct rendition for the DEFINE in the Makefile.PL is dependent upon the version of EU::MM.
With EU-MM-7.04, this is fine: