I noticed M_PI is unavailable on c11. By looking at /usr/include/math.h I can see M_PI is defined if:
#i
If you just want M_PI while looking for a more comprehensive answer with POSIX / XOPEN feature tests macros, etc., an interim solution is:
#ifndef M_PI
#define M_PI (3.14159265358979323846)
#endif
That's "1.20" format, which is also sufficient for 'round-trip' representation for an 80 bit extended type. double precision is "1.16". For 128-bit quad precision:
#define M_PI (3.14159265358979323846264338327950288)
The "1.35" format for round-trip precision. This means if you want to print out a floating point double, and recover the same value when you read it back, you should use "%+1.16" for printf functions, as so on. You might say that a double doesn't have 17 significant digits, but those digits are not 'junk' if you want to recover a value.
Anyway - there are better resources than this available.