Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我不理解的函数声明_C++ - Fatal编程技术网

C++ 我不理解的函数声明

C++ 我不理解的函数声明,c++,C++,今天在浏览API时,我遇到了一些对我来说陌生的函数声明 GLAPI void GLAPIENTRY glColor3b GLbyte红色、GLbyte绿色、GLbyte蓝色 如何解释前3个标记?我不知道在这个问题上用谷歌搜索什么…GLAPI和GLAPIENTRY将成为宏。他们将扩展到特定于平台的令牌,这些令牌描述符号是如何损坏的,如果不是默认的,调用约定是什么,以及如何静态或动态地找到符号 OpenGL使用这样的宏是因为相同的头文件可以在多个不同的编译器上工作,并且通常在操作系统上工作。头文件的

今天在浏览API时,我遇到了一些对我来说陌生的函数声明

GLAPI void GLAPIENTRY glColor3b GLbyte红色、GLbyte绿色、GLbyte蓝色

如何解释前3个标记?我不知道在这个问题上用谷歌搜索什么…

GLAPI和GLAPIENTRY将成为宏。他们将扩展到特定于平台的令牌,这些令牌描述符号是如何损坏的,如果不是默认的,调用约定是什么,以及如何静态或动态地找到符号

OpenGL使用这样的宏是因为相同的头文件可以在多个不同的编译器上工作,并且通常在操作系统上工作。头文件的其他部分使用预处理器来查询它们所在的编译器/操作系统,并更改这些预处理器标记以在该平台上执行正确的操作

至于void,它意味着函数不返回任何内容

如果您创建一个指向glColor3b的函数指针,您可能需要关心这些标记的作用,因为函数指针中通常包含调用约定信息。此外,如果构建设置出错,您可能会收到链接错误的错误,例如从错误中生成的错误。但除了这些情况,你可以忽略它们

在3个不同的编译器上,它可能扩展到:

extern void glColor3b (GLbyte red, GLbyte green, GLbyte blue);

__declspec(dllimport) void __stdcall glColor3b (GLbyte red, GLbyte green, GLbyte blue);

__stdcall void glColor3b (GLbyte red, GLbyte green, GLbyte blue);