gpt4 book ai didi

c - OpenGL 在 OS X 上包含指令

转载 作者:太空狗 更新时间:2023-10-29 16:00:08 25 4
gpt4 key购买 nike

我有点困惑为什么这段代码可以编译。我省略了“必要的”#include <OpenGL/gl.h>程序仍然可以编译。当我的程序从 GL 库调用函数而不包含它们时,这怎么可能。

int main(int argc, char** argv)
{

glClearColor(1.0,1.0,1.0,1.0);
return 0;
}

我使用这个编译命令:

 gcc -framework GLUT -framework OpenGL test.c

我假设添加 -framework 只是指定库所在的链接器,但我认为我仍然需要 header ?

最佳答案

glClearColor 不是宏,因此您不需要标题来定义它。如果您添加警告:

gcc -o test -Wall -W test.c -framework GLUT -framework OpenGL

然后您将收到有关 glClearColor 隐式声明的警告。您也将无法使用任何宏,因为编译器会给您一个错误,指出它们未定义。由于链接器正确解析了 glClearColor 符号,因此您永远不会遇到错误。

我还想到,您可能一直想知道这一点,因为您认为您正在为 C++ 进行编译。您给出的示例实际上编译了 C 代码,其中未能声明函数原型(prototype)不是错误。如果您打算将其编译为 C++ 代码,则需要以下命令行:

g++ -o test test.cpp -framework OpenGL

在那种情况下,您肯定会因为不包含 gl.h 而收到错误,并且您的代码将无法编译。从命令行执行 GCC 时,g++ 是 C++ 编译器,而 gcc 是通用 C 编译器。

关于c - OpenGL 在 OS X 上包含指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/277207/

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