3

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;

は、定義により 32 ビットの符号なし整数型であるSLResulttypeであると定義されています。SLuint32

私の質問は次のとおりです。ラインは何をし(void)result;ますか? これは何の役にも立たず、コンパイラはこれを最適化できると思いました。しかし、この例でも似たような行があちこちに出てきて、結局何か意味があるのだろうかと疑問に思っています。

4

1 に答える 1

7

この種のばかげたコードは、アサーション チェックがオフになっているときに「変数の結果は使用されません」など、コンパイラや lint の警告を黙らせるために挿入されることがあります。

私はコードを書いていないので、確かではありませんが、それは私の推測です。

于 2013-10-18T13:40:57.417 に答える