函数 'DLog' 的隐式声明在 C99 中无效

Implicit declaration of function 'DLog' is invalid in C99

我在这里使用了 NSLog 的宏版本,http://objdev.com/2014/06/debug-logging

像这样,

#ifdef DEBUG
#define DLog(...) NSLog(@"%s(%p) %@", __PRETTY_FUNCTION__, self, [NSString stringWithFormat:__VA_ARGS__])
#endif

它工作正常,直到我将应用程序 运行 模式从 Debug 更改为 Release

现在我得到以下错误:

Implicit declaration of function 'DLog' is invalid in C99.

我该如何解决?

我看了很多问题, error:'implicit declaration of function 'nslog' is invalid at C99', ARC warning: Implicit declaration of function 'DLog' is invalid in C99 and Implicit declaration of function - C99, 但是 none 的答案对我有用。

P.S。此问题与 CocoaLumberjack 完全无关。

错误告诉您 DLogRelease 模式下没有任何定义。 只需将其更改为:

#ifdef DEBUG
#define DLog(...) NSLog(@"%s(%p) %@", __PRETTY_FUNCTION__, self, [NSString stringWithFormat:__VA_ARGS__])
#else
#define DLog(...)
#endif

编辑:如果是发布模式,DLog 将不执行任何操作(空白函数)。如果是debug模式,DLog会按照你的要求打印log。

由于 #ifdef DEBUG 指令

,宏仅在您编译代码和调试模式时定义