#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "native-activity", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "native-activity", __VA_ARGS__))
Dies ist die Definition für diese 2 Makros; später im Code LOGI
und LOGW
werden auf diese Weise verwendenEin #define in C mit drei Punkten
LOGI("accelerometer: x=%f y=%f z=%f",
event.acceleration.x, event.acceleration.y,
event.acceleration.z);
und auf diese Weise
LOGW("Unable to eglMakeCurrent");
Da ich versuche, komplexe Makros und #define
im Allgemeinen zu vermeiden, kann ich nicht bekommen, was dieses Makro tatsächlich Mittel . Was ist die Rolle für die 3-Punkte-Notation hier? Was ändert sich #define
später im Code?
Offensichtlich weiß ich, dass die 3 Punkte verwendet werden, um eine unbegrenzte Anzahl von Argumenten anzugeben, aber ich weiß nicht, wie ich diese Situation lesen soll.
Es heißt ein variadic Makro. http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html – chris
@chris also ist es eine Möglichkeit zu versuchen, weniger wortreich zu sein und die Argumente in einer bestimmten Weise neu zu ordnen? – Ken
Hmm, ich hätte '## __ VA_ARGS__' verwendet, aber ich denke, es ist in Ordnung, solange du ein Argument geben musst. – nneonneo