概要
色々な言語でログを吐こうと・・・。
C++ですらあまり使ったことのないけど・・・。
可変長引数を使った際のメモ。
ここでは#ifdefで切り分けて、
各言語の可変長引数用の出力メソッドを使います。
ソースコード
ヘッダーファイル
#include <stdarg.h>
class AN_Log {
public:
AN_Log() {}
virtual ~AN_Log() {}
static void print(const char* format, ...);
}
ソースファイル
#include "AN_Log.h"
#ifdef _CPP
#include <stdio.h>
#elif _ANDROID
#include <android/log.h>
#elif _IOS
#import <Foundation/Foundation.h>
#endif
void AN_Log::print(const char* format, ...) {
va_list args;
va_start(args, format);
#ifdef _CPP
vfprintf(stderr, format, args);
#elif _ANDROID
__android_log_vprint(ANDROID_LOG_DEBUG, "Tag", format, args);
#elif _IOS
NSLogv([NSString stringWithFormat:@"%s", format], args);
#endif
va_end(args);
}
まとめ
今回、可変長引数のログ出力を調べた理由としては、
iOSアプリ開発にて、C++側で記述しているprintfではOrganizerには出力されなかったのが問題。
(Xcode上のデバッグコンソールにはprintfのログの出力されていたのだがOrganizerには出力されないらしい。)
そこで、
可変長引数をNSLogで出力する必要があったので、ついでにまとめました。
ちなみに動作確認はしてないので、
コピペで動かなかったらゴメンナサイ。
おまけ
vfprintf
int vfprintf(
FILE *stream,
const char *format,
va_list argptr
);
__android_log_vprint
int __android_log_vprint(
int prio,
const char *tag,
const char *format,
va_list args
);
NSLogv
void NSLogv(
NSString* format,
va_list args
);