#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__))
Это определение для этих двух макросов; далее в коде LOGI
и LOGW
используются таким образом
LOGI("accelerometer: x=%f y=%f z=%f",
event.acceleration.x, event.acceleration.y,
event.acceleration.z);
и так
LOGW("Unable to eglMakeCurrent");
Поскольку я стараюсь избегать сложных макросов и #define
в целом, я не могу понять, что на самом деле означает этот макрос. Какую роль здесь играют 3 точки? Что этот #define
меняет позже в коде?
Очевидно, я знаю, что 3 точки используются для обозначения неопределенного количества аргументов, но я не знаю, как читать эту ситуацию.
##__VA_ARGS__
, но я думаю, это нормально, пока вы должны привести аргумент. - person nneonneo   schedule 15.09.2012printf
). Таким образом, вы можете дать макросу строку формата и аргументы для строки формата. Как вы видите, чаще всего он используется для переноса функций с переменным числом аргументов. - person nneonneo   schedule 15.09.2012