そんなことはできません。その理由を理解するには、ユニバーサル アプリ (および C コンパイラ) がどのように機能するかをある程度理解する必要があります。
まず、#if
など#define
は、コンパイル段階の早い段階で呼び出されるプリコンパイラ マクロです。これらは通常、プラットフォーム間でコンパイルできる移植可能なコードを作成するために使用されます。例えば:
# ifdef __ANDROID__
# include <GLES/gl.h>
# include <GLES/glext.h>
# else // iOS
# include <OpenGL/OpenGL.h>
# include <OpenGL/gl.h>
# include <OpenGL/glext.h>
# endif
ただし、ユニバーサル アプリとは、複数の種類のデバイスで実行できるバイナリのことです。このため、iPhone と iPad で実行されるコードは同じコンパイル パスによって生成されます (これは、1 つのアプリで複数の CPU タイプをサポートするために使用されたユニバーサル バイナリまたはファット バイナリとは異なります。これらのアプリには、実際には複数のコンパイラ パスからのコードが含まれていました。 1 つのアプリ バイナリ)。
デバイス タイプは実行時にしか判断できないため、実行時にデバイス タイプ チェックを実行する必要があります。