我目前正在使用 Xcode 4,在我的 .pch 文件中,我有这个宏:#define localize(s) NSLocalizedString((s), nil)
。
当我尝试在某些 .m 文件中使用此宏时,我收到此警告:Implicit declaration of function 'localize' is invalid in C99
。
这段代码能够编译通过,但是我该如何修复它以避免警告?
我目前正在使用 Xcode 4,在我的 .pch 文件中,我有这个宏:#define localize(s) NSLocalizedString((s), nil)
。
当我尝试在某些 .m 文件中使用此宏时,我收到此警告:Implicit declaration of function 'localize' is invalid in C99
。
这段代码能够编译通过,但是我该如何修复它以避免警告?
当我将NSLog替换为DLog时,我遇到了这个问题。我愚蠢地包含了
#define DLog(...) NSLog(...
语句,所以我最终得到了
#define DLog(...) DLog(...
这导致了警告和链接器错误。
隐式函数声明是指在第一次使用时编译器看到的函数调用(而不是首先看到原型或函数定义的函数声明)。
显然,您的代码使用了localize(foo)
,但宏定义未被视为可见。可能的原因是:您忘记了#include
包含localize
宏的文件,或者头文件的预编译出现了问题,没有包括localize
宏,因此它未被展开。
我遇到的另一个“愚蠢”的错误是我的DLog在iOS目标的前缀头文件中定义,因此我不得不将其复制到OSX目标的前缀头文件中...
#import <CocoaLumberjack/DDLog.h>
DDLogError
这样的宏现在在自己的头文件中单独定义。#import <CocoaLumberjack/CocoaLumberjack.h>