Between stable-2.0 and master a patch changed the C representation of the SCM type so that it is now a union.
This code : static SCM foo = SCM_UNSPECIFIED; now expands to something similar to : static SCM foo = (SCM) { ... }; This form (casting a struct or union initializer while initializing a global identifier) is for some reason invalid when gcc is called with "-std=c99" (I was about to say : "was invalid in c99", but who really knowns?) nor "-std=gnu99" (although it works when std is set to c89 or gnu89). I tried to get rid of the cast to (SCM) in tags.h but the compilation then fails since some code relies on the cast to SCM. So, lets suppose I have an app written in c99 that I want to extend with guile, how could I compile it ?