#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__))
Esta es la definición de estas 2 macros; más adelante en el código LOGI
y LOGW
se utilizan de esta maneraA #define en C con tres puntos
LOGI("accelerometer: x=%f y=%f z=%f",
event.acceleration.x, event.acceleration.y,
event.acceleration.z);
y de esta manera
LOGW("Unable to eglMakeCurrent");
Desde Trato de evitar las macros complejas y #define
en general, no puedo conseguir lo que esto significa en realidad macro . ¿Cuál es el papel de la notación de 3 puntos aquí? ¿Qué hace que este #define
cambie más adelante en el código?
Obviamente, sé que los 3 puntos se usan para indicar una cantidad indefinida de argumentos, pero no sé cómo leer esta situación.
Se llama una macro variadic. http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html – chris
@ Chris por lo que es una forma de tratar de ser menos detallado y reorganizar los argumentos de una manera determinada? – Ken
Hmm, habría utilizado '## __ VA_ARGS__', pero supongo que está bien, siempre y cuando usted tiene que dar un argumento. – nneonneo