Что (недействительно) получается; имеется в виду в примере Android OpenSL?

В реализации OpenSL ES для Android следующий пример кода можно найти в файле 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;? Я думал, что это ничего не даст, и компилятор сможет оптимизировать это. Тем не менее, подобная линия появляется во многих местах в примере, и я задаюсь вопросом, имеет ли она какое-то значение в конце концов.


person HYS    schedule 18.10.2013    source источник


Ответы (1)


Такой глупый код иногда вставляется, чтобы отключить предупреждения компилятора или lint, такие как «результат переменной не используется», когда проверка утверждений отключена.

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

person Rémi    schedule 18.10.2013