Cuando llamo a NSLog desde C++, Xcode se queja de que la cadena de formato pasada a NSLog no es una cadena literal. Aquí hay una línea de código que activa el aviso:Llamar a NSLog desde C++: "Cadena de formato no es una cadena literal (potencialmente insegura)"
NSLog(CFSTR("Leaking?"));
No estoy al tanto de cualquier manera de codificar un NSString literal en C++, y no veo una advertencia relevante puedo desactivar en la configuración del proyecto . ¿Hay alguna manera de llamar a NSLog desde C++ sin activar este mensaje? Estoy usando Xcode 4.2.1.
Editar: Esto realmente es código C++. Por lo general, evito Objective-C++, apegándome a Objective-C o simplemente a C++, porque no hay documentación oficial sobre lo que funciona en Objective-C++ y lo que no. Solo he encontrado advertencias vagas de que (por ejemplo) puede haber problemas con algunas partes de la STL. Yo uso plantillas, el STL y otras características "avanzadas" de C++, así que quiero ir a lo seguro.
Editar # 2, la solución: Acabo de descubrir que el clang admite muchas más banderas de advertencia de las que en realidad están documentadas. (Debería haber sido obvio de la larga lista de advertencias que Xcode me ofreció.) Intenté -Wno-format-nonliteral a la gcc, y ahora Xcode está contento.
Si está llamando 'NSLog', que es parte de Foundation, entonces está usando Objective-C. Use '@" Leaking? "' Y asegúrese de que su archivo tenga la extensión '.mm'. – Joe
@Joe ... a menos que se refiera a Objective-C++? – csl
@csl Moví el comentario a una respuesta con alguna aclaración. – Joe