In any target header installed for user use, such as arm_acle.h, you need to be namespace-clean. In this case, that means you need to use implementation-namespace identifiers such as __a, __b and __d in case the user has defined macros with names such as a, b and d (unless the ACLE says that identifiers a, b and d are in the implementation's namespace when this header is included, which would be a very odd thing for it to do).
-- Joseph S. Myers jos...@codesourcery.com