Opengl programımda (C++) hem OS X'in hem de linux'un içeriklerini bulundurmak isterim. Programım, diğeri yoksa bir tane kullanmak üzere nasıl ayarlayabilirim? İşte ben şu anda ne yapıyorum:OS X & Linux için OpenGL üstbilgileri
#ifdef __APPLE__
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
#else
#ifdef _WIN32
#include <windows.h>
#endif
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#endif
Tüm derleyiciler mac için tanımlamalıdır (pekala, bunu gcc ve belki çınlama olduğunu tahmin):
if(!FileExists(OpenGL/gl.h))
#include <GL/glut.h> //linux lib
else {
#include <OpenGL/gl.h> //OS x libs
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
}
İşte
ben 'yerine # ifdef'' arasında defined' formu #if sonra defined' #elif 'kullanabilirsiniz beacuse tercih ve "# else" yerine # bir 'endif' yerine birden fazla' # endif' için – Skizz
+1 yerine * bir * 'endif' yerine * burada * her yerde' glut.h' dahil! –
Genel olarak, bu daha iyi bir fikir gibi geliyor. Tabii ki, #ifdef _WIN32 aslında ilk #ifdef'in elma olmayan dalına katlanıyor, bu yüzden #endifleri azaltacağından emin değilim. Ancak, mac/win/* nix için 3 ayrı dal yaptım ve önerdiğiniz gibi #if tanımlanmışsa daha net olabilir. – Gretchen