pedantic by default
Mark GNU extensions with __extension__