tutorial español aprender objective-c xcode macros c99 pch

objective c - español - Declaración implícita de función-C99



solidity español (5)

Las declaraciones de funciones implícitas son aquellas que el compilador ve por primera vez como una llamada a función (a diferencia de aquellas en las que primero se ve un prototipo o la definición de la función).

Aparentemente su código utilizaba localize(foo) pero la definición de la macro no era visible. Posibles razones: se olvidó de #include el archivo que contiene la macro de localización o la precompilación de los encabezados fue hacia el sur y no incluyó la macro de localize por lo que no se expandió.

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 algún archivo .m, recibo esta advertencia: Implicit declaration of function ''localize'' is invalid in C99 .

Este código se compila sin problemas, pero ¿cómo puedo solucionarlo para no recibir una advertencia?


Tuve este problema cuando hice un reemplazo global de NSLog con DLog. Tontamente incluí el

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

declaraciones, así que terminé con

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

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


Otro error "tonto" que encontré fue el hecho de que mi DLog estaba definido en el encabezado de prefijo del destino iOS, así que tuve que copiarlo al prefijo del destino OSX, así ...


Tuve este problema porque accidentalmente importé CocoaLumberjack de esta manera:

#import <CocoaLumberjack/DDLog.h>

Aparentemente el equipo CocoaLumberjack modificó el código un poco más; y macros como DDLogError ahora se definen por separado en su propio archivo de encabezado.

Reemplacé la declaración de importación con esto y el error desapareció:

#import <CocoaLumberjack/CocoaLumberjack.h>


En mi caso, solo un archivo estaba dando este error. Resultó que lo agregué a la membresía objetivo de las pruebas del proyecto (en el Inspector de archivos a la derecha).