Что (недействительно) результат; значит в андроиде OpenSL пример?
В android-реализации OpenSL ES следующий пример кода можно найти в android-ndk /samples/native-audio/jni/native-audio-jni.c
SLresult result;
result = slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL);
assert(SL_RESULT_SUCCESS == result);
(void)result;
SLResult
определяется как тип SLuint32
, который по определению является 32-разрядным целым числом без знака.
Мой вопрос: что означает линия (void)result;
делать? Я думал, что это ничего не сделает, и компилятор может оптимизировать это. Тем не менее, подобная линия появляется во многих местах в примере, и мне остается только задуматься, имеет ли она какое-то значение в конце концов.
1 ответ
Такой глупый код иногда вставляется, чтобы заставить замолчать предупреждения компилятора или lint, такие как "переменный результат не используется", когда проверка утверждения выключена.
Я не писал код, поэтому не могу быть уверен, но это мое предположение.