GLFW头文件引入写法看似怪异但可运行的疑问
GLFW头文件引入写法看似怪异但可运行的疑问
嘿,能把GLFW代码跑通已经很棒啦!不过发现自己的写法和教程视频不一样,哪怕能正常运行也会忍不住好奇为啥对吧?我来给你捋捋~
你贴的代码片段是这样的:
#include <iostream> #include <glfw3.h> int main() { std::cout << "Hello World!\n"; GLFWwindow* window; if (!glfwInit()) exit(EXIT_FAILURE); window = glfwCrea
(看起来代码没写完哦,后面的glfwCreateWindow相关部分记得补全呀)
回到你关心的写法差异问题,核心原因是编译环境的头文件搜索路径配置在起作用:
- 多数GLFW教程里会用
#include <GLFW/glfw3.h>这种写法,这是因为GLFW默认安装后,头文件会被放在一个名为GLFW的子目录下,必须带上这个目录前缀,编译器才能顺着路径找到目标头文件。 - 而你的代码直接写
#include <glfw3.h>就能生效,说明你的项目或编译环境已经把GLFW头文件所在的上级目录直接添加到了头文件搜索路径里。比如用IDE的话,可能在项目设置的“包含目录”里直接加了GLFW的include目录;如果是CMake构建,可能通过target_include_directories配置了正确的路径,编译器不用找子目录就能定位到glfw3.h。
最后给你个实用小建议:
为了代码的可移植性,最好改成#include <GLFW/glfw3.h>的标准写法。毕竟换个环境(比如把代码发给朋友、换台电脑编译)时,别人的环境未必会像你的一样把GLFW的头文件目录直接设为搜索路径,带目录前缀的写法兼容性会强很多。
内容来源于stack exchange
相关产品推荐
相关产品推荐

