C++ 隐藏OpenGL符号-使用声明
我注意到加载OpenGL函数的库使用宏隐藏符号,例如: 它允许在可能通过不同库链接到OpenGL的更复杂的应用程序中避免冲突。我有一个C++库,它也加载OpenGL符号。我没有使用宏,而是将OpenGL函数指针放在名称空间中,例如:C++ 隐藏OpenGL符号-使用声明,c++,opengl,C++,Opengl,我注意到加载OpenGL函数的库使用宏隐藏符号,例如: 它允许在可能通过不同库链接到OpenGL的更复杂的应用程序中避免冲突。我有一个C++库,它也加载OpenGL符号。我没有使用宏,而是将OpenGL函数指针放在名称空间中,例如: //lib.h #include <GL/gl.h> #include <GL/glext.h> namespace GL { extern PFNGLGENQUERIESPROC glGenQueries; void lo
//lib.h
#include <GL/gl.h>
#include <GL/glext.h>
namespace GL
{
extern PFNGLGENQUERIESPROC glGenQueries;
void load();
}
using GL::glGenQueries;
//lib.cpp
#include "lib.h"
namespace GL
{
PFNGLGENQUERIESPROC glGenQueries = 0;
void load()
{
glGenQueries = (PFNGLGENQUERIESPROC)glXGetProcAddress((const GLubyte*)"glGenQueries");
}
}
//lib.h
#包括
#包括
名称空间GL
{
外部PFNGLGENQUERIESPROC glGenQueries;
空荷载();
}
使用GL::glgenquerys;
//lib.cpp
#包括“lib.h”
名称空间GL
{
PFNGLGENQUERIESPROC glgenquerys=0;
空荷载()
{
glgenquerys=(pfnglgenqueryesproc)glXGetProcAddress((const GLubyte*)“glgenquerys”);
}
}
对于我使用声明定义的一些OpenGL函数,例如:使用GL::glGenQueries代码>因为我不想修改使用我的库的库中的代码
使用声明是否会影响隐藏符号,或者我的库中的glgenquerys
将隐藏在名称空间后面?不同名称空间中的相同名称不会冲突,即使您使用使用
使用GL::glgenquerys
只会告诉编译器,当您编写glgenquerys
时,您的意思是GL::glgenquerys
。它实际上并没有将函数放在名称空间之外
//lib.h
#include <GL/gl.h>
#include <GL/glext.h>
namespace GL
{
extern PFNGLGENQUERIESPROC glGenQueries;
void load();
}
using GL::glGenQueries;
//lib.cpp
#include "lib.h"
namespace GL
{
PFNGLGENQUERIESPROC glGenQueries = 0;
void load()
{
glGenQueries = (PFNGLGENQUERIESPROC)glXGetProcAddress((const GLubyte*)"glGenQueries");
}
}