2

OpenGLの見事な第4版では、70ページの例は次のようになっています。

//returns space-delimited names of all extensions supported by the OpenGLDriver
const char *extensions = glGetString(GL_EXTENSIONS);
if(strstr(extensions, "WGL_EXT_swap_control" != NULL))
{
   //...
}

これはタイプOですか?または私は行方不明#includeですか?strstr()この呼び出しをサポートするためのオーバーロードが見つかりません。私はそれがすべきだと思います

if(strstr(extensions, "WGL_EXT_swap_control") != NULL)
{
  //...
}
4

1 に答える 1

10

はい、明らかなタイプミスです。あなたのコードは正しいです。Cはオーバーロードをサポートしていません。

関数のプロトタイプはint strstr(const char *s, int h);、本のコードをコンパイルするためのものでなければなりませんが、それは(Jonathon Reinhartが指摘したように)あまり意味がありません。文字列内の整数をどのように探しますか?

更新:ここには、「サンプル」コードが明らかにコンパイルされない本の品質感についての教訓があります。

更新2:forsvarirが指摘しているように、Cコンパイラーにこれをコンパイルさせることができます。その場合、比較の結果の整数を文字列ポインターとして扱い、それをstrstr()使用して実行します。これは、多くのオペレーティングシステムですぐにクラッシュし、すべてのシステムで未定義の動作を引き起こします。

于 2012-07-03T13:46:03.240 に答える