Standard headers may contain C++ templates which are not permitted inside an extern "C" block. This might be the case when we include <complex.h>.