gpt4 book ai didi

c++ - 像 OpenGL.h 这样的头文件是如何工作的

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:03 24 4
gpt4 key购买 nike

我了解头文件在编译源文件的其余部分之前进行处理,以使开发代码的过程更容易。我也知道他们允许工作声明。但是,我没有看到在头文件 OpenGL.h 中使用的函数,就像我在我一直在研究的所有教程中所做的那样。 OpenGL.h 使用#define extern 对我来说非常晦涩。我不知道发生了什么。例如

#define CGL_VERSION_1_0  1
#define CGL_VERSION_1_1 1
#define CGL_VERSION_1_2 1
#define CGL_VERSION_1_3 1


extern CGLError CGLQueryRendererInfo(GLuint display_mask,
CGLRendererInfoObj *rend, GLint *nrend);

extern CGLError CGLDestroyRendererInfo(CGLRendererInfoObj rend);
extern CGLError CGLDescribeRenderer(CGLRendererInfoObj rend, GLint
rend_num, CGLRendererProperty prop, GLint *value);

我不知道这里发生了什么,并且遇到过其他具有类似模糊性的 c++ 包含。想自己写一个库,感觉popper的头文件都是这样写的。

对我来说,似乎所有发生的事情都是正在创建的关键字或变量,或者没有代码块的函数。我已经学习了 2 门 c++ 类(class),介绍和 c++,但他们没有非常详细地涉及这个主题。

我只是想对正在发生的事情进行去混淆处理。

最佳答案

通常,库头文件不包含实现(例如,只有头文件的库除外,尤其是带有大量 C++ 模板代码的库)。 header 只是提供有关如何调用库函数的信息,即数据类型和签名。实现通常包含在 static or shared library 中。 .

严格来说,OpenGL 甚至不是一个库,而是一个规范,而 OpenGL 实现通常作为共享库提供。也就是说,OpenGL 函数的实现存储为一堆包含编译代码的二进制数据。如果您真的想要源代码,则需要检查您使用的是哪种 OpenGL 实现(例如,它可能是 nvidia 驱动程序,我怀疑是否有真正的源代码可用)。

为了了解此编译代码如何与您的代码链接以及此过程中如何涉及 header ,我建议您阅读有关 C++ 编译过程以及静态和动态链接的更多信息。

关于c++ - 像 OpenGL.h 这样的头文件是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com