Что (недействительно) результат; значит в андроиде 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, такие как "переменный результат не используется", когда проверка утверждения выключена.

Я не писал код, поэтому не могу быть уверен, но это мое предположение.

Другие вопросы по тегам