strstr有这种超载吗?

P.B*_*key 2 c opengl

在OpenGL superbible 4th ed中,pg 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))
{
   //...
}
Run Code Online (Sandbox Code Playgroud)

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

if(strstr(extensions, "WGL_EXT_swap_control") != NULL)
{
  //...
}
Run Code Online (Sandbox Code Playgroud)

unw*_*ind 10

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

该函数的原型必须是int strstr(const char *s, int h);用于编写本书的代码,而不是(正如Jonathon Reinhart指出的那样)很有意义; 你如何在字符串中查找整数?

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

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

  • @ P.Brian.Mackey听起来像是在用C++编译器进行编译 (2认同)