#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__))
Questa è la definizione per questi 2 macro; più avanti nel codice LOGI
e LOGW
vengono usati in questo modoA #define in C con tre punti
LOGI("accelerometer: x=%f y=%f z=%f",
event.acceleration.x, event.acceleration.y,
event.acceleration.z);
e in questo modo
LOGW("Unable to eglMakeCurrent");
Dato che cerco di evitare macro complesse e #define
in generale, non posso ottenere ciò che questo significa in realtà macro . Qual è il ruolo della notazione a 3 punti qui? Cosa cambia in seguito questo #define
nel codice?
Ovviamente so che i 3 punti sono usati per indicare una quantità indefinita di argomenti, ma non so come leggere questa situazione.
Si chiama macro variadica. http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html – chris
@chris quindi è un modo per cercare di essere meno prolisso e riorganizzare gli argomenti in un certo modo? – Ken
Hmm, avrei usato '## __ VA_ARGS__', ma suppongo che sia OK finchè devi dare un argomento. – nneonneo