Cómo deshacerse de las advertencias de que las definiciones del precompilador no están definidas.
Hay un archivo que descargué del sitio web de Unity.
pragma once
// Incluye las bases estándar, define la plataforma actual, etc.
include <stddef.h>
// ¿En qué plataforma estamos?
// UNITY_WIN – Windows (regular win32)
// UNITY_OSX – Mac OS X
// UNITY_LINUX – Linux
// UNITY_IOS – iOS
// UNITY_TVOS – tvOS
// UNITY_ANDROID – Android
// UNITY_METRO – WSA o UWP
// UNITY_WEBGL – WebGL
if MSC_VER
#define UNITY_WIN 1
elif defined(APPLE)
#if TARGET_OS_TV // ‘TARGET_OS_TV’ no está definido, se evalúa a 0
#define UNITY_TVOS 1
#elif TARGET_OS_IOS // ‘TARGET_OS_IOS’ no está definido, se evalúa a 0
#define UNITY_IOS 1
#else
#define UNITY_OSX 1 // Macro ‘UNITY_OSX’ redefinida
#endif
elif defined(ANDROID)
#define UNITY_ANDROID 1
elif defined(UNITY_METRO) || defined(UNITY_LINUX) || defined(UNITY_WEBGL)
// Estos están definidos externamente
elif defined(EMSCRIPTEN)
// Esto ya está definido en Unity 5.6
#define UNITY_WEBGL 1
else
#error “¡Plataforma desconocida!”
endif
…
El problema es que cuando intento incluir el archivo en mi proyecto de XCode, obtengo una advertencia (ponlas en comentarios)
…
#if TARGET_OS_TV // ‘TARGET_OS_TV’ no está definido, se evalúa a 0
#define UNITY_TVOS 1
#elif TARGET_OS_IOS // ‘TARGET_OS_IOS’ no está definido, se evalúa a 0
#define UNITY_IOS 1
#else
#define UNITY_OSX 1 // Macro ‘UNITY_OSX’ redefinida
#endif
…
Intenté usar #pragma warning(suppress: 4101) y algunos enfoques similares, pero no ayuda.
UPD
...
#ifdef TARGET_OS_TV
#define UNITY_TVOS 1
#elif TARGET_OS_IOS // 'TARGET_OS_IOS' no está definido, se evalúa a 0
#define UNITY_IOS 1
#else
#define UNITY_OSX 1
#endif
...
Usar “ifdef” ayuda a deshacerse de la primera advertencia, pero la segunda aún persiste.
UPD2
…
#ifdef TARGET_OS_TV
#define UNITY_TVOS 1
#elifdef TARGET_OS_IOS // Directiva de preprocesamiento no válida
#define UNITY_IOS 1
#else
#define UNITY_OSX 1
#endif
…
davy.ai
Las advertencias se deben a que
TARGET_OS_TV
yTARGET_OS_IOS
no están definidos en Xcode, pero el código está comprobando su existencia mediante#if
. Para solucionar este problema, reemplace#if
por#ifdef
en las comprobaciones deTARGET_OS_TV
yTARGET_OS_IOS
. El código actualizado se verá así:Esto resolverá la primera advertencia. Sin embargo, la segunda advertencia sobre la redefinición de
UNITY_OSX
no se puede solucionar, ya que este es el comportamiento previsto del código.