If I include c14n.h before any other libxml2 header, none of the
declarations are declared; that is, it's basically a no-op. This is due
to the following parts of the header:
#ifndef __XML_C14N_H__
#define __XML_C14N_H__
#ifdef LIBXML_C14N_ENABLED
#ifdef LIBXML_OUTPUT_ENABLED
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <libxml/xmlversion.h>
Note that xmlversion.h, which defines LIBXML_C14N_ENABLED and
LIBXML_OUTPUT_ENABLED, is not included until after they are used in
ifdefs. This causes a problem if c14n.h is the first libxml2 header
(which is quite likely, if the headers are #included in alphabetical
order).