Actualmente estoy usando Xcode 4, y en mi .archivo pch tengo esta macro:
#define localize(s) NSLocalizedString((s), nil).

Cuando trato de usar esta macro en algunos .m el archivo, me aparece esta advertencia: Implicit declaration of function 'localize' is invalid in C99.

Este código se compila sin problema, pero ¿cómo puedo solucionar esto para que no me sale un aviso?

  • Yo no era capaz de reproducir el problema, se compila y se ejecuta bien, no hay advertencias.
  • Parece que fue un error en XCode… 4.0.2 creo. 4.2 beta funciona bien.
InformationsquelleAutor Misa | 2011-07-15

5 Comentarios

  1. 51

    He tenido este problema cuando hice un reemplazo global de NSLog con DLog. Yo, tontamente, incluido el

    #define DLog(...) NSLog(...

    declaraciones, así que terminé con

    #define DLog(...) DLog(...

    que causó las advertencias, y un error del vinculador.

  2. 34

    Función implícita declaraciones son aquellos en los que el compilador ve la primera vez que se utiliza como una llamada a una función (como opuestos a aquellos en los que un prototipo o la definición de la función es visto de primera).

    Al parecer el código utilizado localize(foo) pero la definición de macro no era visible. Posibles razones: a usted se le olvidó #include el archivo que contiene la localize macro o la precompilación de encabezados fui sur, no incluyen la localize macro de modo que se dejó sin expandir.

    • Pero, lo que podría indicar un error en Xcode, si la macro se define en el proyecto encabezado prefijo, debido a que la cabecera debe ser precompilado y disponible para todas las unidades de compilación (por ejemplo, cada .m archivo en el proyecto). FWIW todavía veo este error de vez en cuando en Xcode 4.4.1, pero dejar de fumar y de relanzamiento de Xcode lo arregla.
    • Que, probablemente, podría ser presentado en virtud ‘de precompilación de los encabezados se dirigió al sur’. Con errores en herramientas, cualquier cosa puede suceder.
    • He visto esto suceder en Xcode 5. La manera más segura de deshacerse de el mensaje de advertencia es simplemente incluir el archivo de cabecera dentro del archivo que muestra el error.
  3. 2

    Otro «tonto» error me encontré fue el hecho de que mi DLog fue definido en el encabezado prefijo del iOS de destino, por lo que tuve que copiarlo para el prefijo de la OSX destino, así…

  4. 1

    He tenido este problema porque se me ha importado CocoaLumberjack como este:

    #import <CocoaLumberjack/DDLog.h>

    Al parecer, la CocoaLumberjack equipo modular el código de algunos más; y macros como DDLogError ahora se definen por separado en su propio archivo de encabezado.

    Que sustituyó a la declaración de importación con este y el error fue:

    #import <CocoaLumberjack/CocoaLumberjack.h>
  5. 1

    En mi caso, sólo un archivo, fue dando este error. Resultó que he añadido para el proyecto de pruebas de la meta de afiliación (en el Inspector de Archivo a la derecha).

Dejar respuesta

Please enter your comment!
Please enter your name here