[英]c++ #ifdef Mac OS X question
我對 C++ 相當陌生。 我目前正在進行一個小組項目,我們希望我們的課程與實驗室計算機 (Windows) 和我的計算機 (Mac OS X) 兼容。
以下是我們一直放在文件頂部的內容:
#ifdef TARGET_OS_X
# include <GLUT/glut.h>
# include <OpenGL/OpenGL.h>
#elif defined _WIN32 || defined _WIN64
# include <GL\glut.h>
#endif
我意識到以前有人問過這個問題,但我的搜索一直給我提供相互矛盾的答案,例如“_MAC”、“TARGET_MAC_OS”、“MACINTOSH”等。在#ifdef 語句中放入的當前和正確的聲明是什么來實現這一點與Mac兼容? 現在它不起作用。
謝謝!
根據這個答案:
#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
簡而言之:
#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
這取決於編譯器。 #ifdef __APPLE__
適用於 gcc。
小更正:#ifdef TARGET_OS_MAC 將使您在 OS X 和 iOS 上始終為真,因為它根據平台定義了 0 或 1,但是當定義了APPLE時,TARGET_OS_MAC 也被定義了,因此在 #ifdef APPLE 中檢查它毫無價值。 您可能想改用 #if TARGET_OS_MAC。 所有 TARGET_* 宏都相同。
據微軟稱, _WIN32
將涵蓋 32 位和 64 位版本的 Windows。 __APPLE__
適用於 Clang(至少在小牛隊)。 因此,編寫上述 ifdef 的一種正確方法是:
#ifdef __APPLE__
DoSomething();
#elif _WIN32
DoSomethingElse();
#else
GenerateErrorOrIgnore
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.