http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56454
--- Comment #5 from Kostya Serebryany <kcc at gcc dot gnu.org> 2013-02-26 07:38:42 UTC --- Hm... Ok... Although there is a risk that this way we may never reach a decision. Is there a precedent of solving issues this way? How about __has_feature, by the way? Should we start this discussion on the two lists? (reminder: clang uses #if __has_feature(address_sanitizer), gcc uses #if __SANITIZE_ADDRESS__) Clang long ago refused to use a cpp macro and insisted on __has_feature. My several feeble attempts to ask for __has_feature in gcc were mostly ignored. I don't care which one is used, but the current thing (below) is ugly. // GCC does not understand __has_feature. #if !defined(__has_feature) # define __has_feature(x) 0 #endif // Clang understands __has_feature, GCC defines __SANITIZE_ADDRESS__ #if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)