Я работаю в мультиплатформенном проекте, использующем OpenGL, и дошел до того, что мне нужно было запрашивать текущий контекст.
В Windows я использовал wglGetCurrentContext () в том числе windows.h это работало нормально.
С другой стороны, когда пытался скомпилировать в Linux, я использую glXGetCurrentContext () и в том числе glx.h который внутренне включает Xlib.h а также X.h
Бывает, что в моем исходном коде у меня есть класс Статус но в Xlib есть макрос, называемый тем же самым, т.е. #define Status int, Ага! большая проблема сейчас, так как я использую свой класс везде.
Что было бы лучшим способом преодолеть эту проблему? Идеи, которые я имею в виду прямо сейчас,
#pragma push_macro("Status")
с последующим #undef Status
Если у вас есть другие рекомендации, дайте мне знать, я очень ценю их.
Как минимум, вы можете изолировать glXGetCurrentContext () в свой собственный модуль перевода:
myGlXGetCurrentContext.hpp
GLUint myGlXGetCurrentContext();
myGlXGetCurrentContext.cpp
#include<glx.h>
GLUint myGlXGetCurrentContext(){ return glXGetCurrentContext(); }
whatever.hpp
#include<myGlXGetCurrentContext.hpp>
...
Попытайтесь поместить Ваши классы в пространство имен.