Arhn - архитектура программирования

Определение макроса в кросс-платформенной

При разработке различных платформ (Android, iPhone, Mac, Windows и т. Д.) Необходима разнесенная обработка (# ifdef / # endif) в зависимости от определения платформы. Но я не знаю оригинального определения в Mac / iPhone / Android.

Windows: WIN32 (Visual C ++)

Mac: __MAC_NA (?) (XCode)

iPhone / iPad / iPod: __IPHONE_NA (?) (XCode)

Android: ?? (AndroidNDK)

По какому определению я должен делиться?

03.07.2010


Ответы:


1

Я считаю, что для iPhone это TARGET_OS_IPHONE, а для Android - ANDROID. Я не слишком знаком с особенностями Apple, но, покопавшись, я нашел отличный список для множества определений ОС здесь. Здесь есть еще один ответ, касающийся SO, у которого есть метод для извлечения определений, найденный здесь

03.07.2010
  • Это хороший момент. Определенные TARGET_OS_IPHONE и TARGET_IPHONE_SIMULATOR существуют. ›› Android это ANDROID О, это можно было бы разделить по ANDROID. Спасибо. 06.07.2010
  • Он определил это следующим образом. [ANDROID - ›Android] [TARGET_OS_IPHONE или TARGET_IPHONE_SIMULATOR -› iPhone / iPad / iPodTouch] [WIN32 - ›Windows] [Если TARGET_OS_IPHONE и TARGET_IPHONE_SIMULATOR не определены, а APPLE - в противном случае - -› Mac] [Mac] ›Unix или Linux] 07.07.2010

  • 2

    Вы всегда можете сделать что-то для своих проектов, тем самым освободившись от привязки к компилятору / платформе defines.

    • Android: #define PLATFORM_ANDROID
    • Iphone: #define PLATFORM_IPHONE
    • и Т. Д.

    И пусть все сборки включают файл конфигурации, который определяет один из этих макросов в данном проекте, и который должен работать повсеместно. Если вы используете Visual Studio, вы можете просто определить их в настройках проекта, даже не нуждаясь в файле конфигурации.

    03.07.2010
  • Это действительно единственный безопасный и чистый способ сделать это. Я видел альтернативу в нескольких программах (экран GNU - худшее, о чем я могу думать), и это становится кошмаром. Не говоря уже о том, что если ваш код тестирует любое определение макроса, начинающееся с _, которое явно не определено в стандарте C, его поведение не определено. Помимо этого, вам действительно следует избегать тестирования платформ и предполагать наличие / отсутствие функций, основанных на платформе. Платформы со временем сильно меняются. Гораздо лучше протестировать конкретные функции, которые вы хотите использовать, и иметь что-то вроде #ifdef HAVE_FOO. 03.07.2010
  • Ага. Я понимаю. При разработке в ОС Linux, такой как ubuntu, путь кажется хорошим. Спасибо! 06.07.2010

  • 3

    Android NDK использует определение ANDROID.

    03.07.2010
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..