Xcode 7.3: "Expansión ambigua de macro" al volver a definir macro en file de prefijo

Estoy usando Xcode 7.3, y recibo una advertencia de "expansión ambigua de macro", para una macro que se definió en Foundation, pero que no he definido y networkingefinido en mi file de prefijo. Tengo modules habilitados.

Reproducir:

  • Establezca "Habilitar modules (C y Objective-C)" en Sí en la configuration de compilation
  • Use el siguiente file de prefijo:

    #import <Foundation/Foundation.h> #undef assert #define assert(e) NSLog(@"hi") // implementation is not important 
  • Utilice el siguiente file fuente principal:

     int main() { assert(42); return 0; } 
  • Luego construye en Xcode.

  • Muestra una advertencia de "expansión ambigua de macro 'assert'" en la línea en el file fuente que usa la macro "assert". La "Ampliación de esta definición de 'assert'" apunta a la definición del encabezado del sistema, no a mi networkingefinición. La "Otra definición de 'assert'" apunta a la definición en mi file de prefijo.

Esta advertencia no ocurre cuando los modules están deshabilitados.

Este es un error en Xcode; agradeceríamos que pudiera presentar un informe de error en https://bugreport.apple.com y dejar el error # en un comentario aquí. Sus opciones para trabajar alnetworkingedor de este error mientras tanto son:

  • Puede usar un nombre diferente de "afirmar" para esta macro.
  • Puede configurar la configuration de compilation GCC_PRECOMPILE_PREFIX_HEADER en NO, ya que PCH no proporciona mucho beneficio cuando ya tiene modules. El encabezado del prefijo seguirá funcionando, simplemente no se convertirá en un PCH.
  • Puede apagar los modules.