strstr有这种超载吗?

时间:2012-07-03 13:44:47

标签: c opengl

在OpenGL superbible第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))
{
   //...
}

这是一个类型吗?或者我错过了#include?我找不到strstr()的重载来支持此调用。我认为应该是

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

1 个答案:

答案 0 :(得分:10)

是的,显而易见的错字。你的代码是正确的。 C不支持重载。

函数的原型必须是int strstr(const char *s, int h);才能编写本书的代码,而那(不像乔纳森莱因哈特指出的那样)很有意义;你如何在字符串中查找整数?

更新:这里有一个关于书籍质量感的教训,其“示例”代码显然无法编译。

UPDATE 2 :正如forsvarir指出的那样,你可以得到一个C编译器来编译它,在这种情况下,它会将比较产生的整数视为字符串指针,并且运行{{ 1}}使用它。在许多操作系统上,这将立即崩溃,并将在所有系统上调用未定义的行为。