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 回答