Je suis assez nouveau en C++. Je travaille actuellement sur un projet de groupe et nous voulons rendre nos cours compatibles avec les ordinateurs du laboratoire (Windows) et mon ordinateur (Mac OS X).
Voici ce que nous avons mis en haut de nos fichiers:
#ifdef TARGET_OS_X
# include <GLUT/glut.h>
# include <OpenGL/OpenGL.h>
#Elif defined _WIN32 || defined _WIN64
# include <GL\glut.h>
#endif
Je réalise que cette question a déjà été posée mais mes recherches m'ont donné des réponses contradictoires telles que "_MAC", "TARGET_MAC_OS", "Macintosh", etc. Quelle est la déclaration actuelle et correcte à mettre dans l'instruction #ifdef pour faire ceci compatible avec Mac? Pour l'instant, cela ne fonctionne pas.
Je vous remercie!
Selon cette réponse :
#ifdef __Apple__
#include "TargetConditionals.h"
#ifdef TARGET_OS_IPHONE
// iOS
#Elif TARGET_IPHONE_SIMULATOR
// iOS Simulator
#Elif TARGET_OS_MAC
// Other kinds of Mac OS
#else
// Unsupported platform
#endif
#endif
Bref:
#ifdef __Apple__
#include "TargetConditionals.h"
#ifdef TARGET_OS_MAC
#include <GLUT/glut.h>
#include <OpenGL/OpenGL.h>
#endif
#Elif defined _WIN32 || defined _WIN64
#include <GL\glut.h>
#endif
Cela dépend du compilateur. #ifdef __Apple__
fonctionne pour gcc.
Petite correction: #ifdef TARGET_OS_MAC vous obtiendra toujours vrai sur OS X et iOS, car il définit soit 0 soit 1 selon la plate-forme, mais lorsque Apple est défini, TARGET_OS_MAC est également défini, donc le vérifier à l'intérieur du #ifdef Apple ne vaut rien. Vous souhaiterez peut-être utiliser #if TARGET_OS_MAC à la place. Idem pour toutes les macros TARGET_ *.
Selon Microsoft, _WIN32
couvrira les versions 32 bits et 64 bits de Windows. Et __Apple__
fonctionne pour Clang (au moins dans Mavericks). Donc, une bonne façon d'écrire les ifdefs ci-dessus est:
#ifdef __Apple__
DoSomething();
#Elif _WIN32
DoSomethingElse();
#else
GenerateErrorOrIgnore