在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)
{
//...
}
答案 0 :(得分:10)
是的,显而易见的错字。你的代码是正确的。 C不支持重载。
函数的原型必须是int strstr(const char *s, int h);
才能编写本书的代码,而那(不像乔纳森莱因哈特指出的那样)很有意义;你如何在字符串中查找整数?
更新:这里有一个关于书籍质量感的教训,其“示例”代码显然无法编译。
UPDATE 2 :正如forsvarir指出的那样,你可以得到一个C编译器来编译它,在这种情况下,它会将比较产生的整数视为字符串指针,并且运行{{ 1}}使用它。在许多操作系统上,这将立即崩溃,并将在所有系统上调用未定义的行为。