私は次のコードでLogger.h
を持っている:'のva_startは'
LogDebug(@"Name is called with flag: %@", collectName ? @"YES" : @"NO");
は、しかし、私はエラーを取得する:として
#import <Foundation/Foundation.h>
#import <asl.h>
#define LogDebug(format, ...){ \
Logger(ASL_LEVEL_DEBUG, format,##__VA_ARGS__); }
#define Logger(LEVEL,format, ...) \
LogLocal(LEVEL,format,##__VA_ARGS__);
#define LogLocal(LEVEL, format, ...) \
va_list arg_list; \
va_start(arg_list, format); \
// ...\
va_end(arg_list); \
Iがobj-Cからコールログ
'va_start' used in function with fixed args
この問題を解決するにはどうすればよいですか?
EDIT 1:
私も呼び出そう:AFLogLocal(LEVEL,format,...);
- 同じエラーに
EDIT 2:
を私はasl_log
を削除し、NSLog
と交換しますならば - それは動作します:
#define LogLocal(LEVEL,format, ...) \
NSLog((@"XXX: %s " format), __PRETTY_FUNCTION__, ##__VA_ARGS__);
EDIT 3
クレジット@Amin Negm-Awad
に、として.m
ファイル内の関数でLogLocal
を置き換え:予想通り
void LogLocal(int level, NSString *format, ...){
va_list arg_list;
va_start(arg_list, format);
va_end(arg_list);
NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:arg_list];
asl_add_log_file(NULL, STDERR_FILENO);
asl_log(NULL, NULL, (level), "XXXX: %s", [formattedString UTF8String]);
}
作品。