ПРИЛОЖЕНИЕ G: ОПРЕДЕЛЕНИЯ КОМПИЛЯТОРА ВО ВРЕМЯ КОМПИЛЯЦИИ

На верх  Назад 

В этом приложении описываются возможные определения при компиляции программ, использующих Free Pascal. Приведены краткие описания определений, а затем также описано его использование.

Таблица G.1. Возможные определения при компиляции с использованием FPC.

Определение

Описание

FPC_LINK_DYNAMIC

Определено, если выход будет связан динамически. Определяется с помощью переключателя компилятора -XD.

FPC_LINK_STATIC

Определено, если выход будет скомпонован статически. Это значение по умолчанию.

FPC_LINK_SMART

Определено, если выход с «умной компоновкой». Определено, если использован переключатель компилятора -XX.

FPC_PROFILE

Определено, если профилирующий код добавлен в программу. Определено, если использован переключатель компилятора ‑pg.

FPC_CROSSCOMPILING

Определено, если целевые ОС/процессор отличаются от исходных ОС/процессора.

FPC

Всегда определено для Free Pascal.

VER2

Всегда определено для Free Pascal версии 2.x.x.

VER2_0

Всегда определено для Free Pascal версии 2.0.x.

VER2_2

Всегда определено для Free Pascal версии 2.2.x.

FPC_VERSION

Содержит сташий номер версии FPC.

FPC_RELEASE

Содержит младший номер версии FPC.

FPC_PATCH

Содержит третью часть номера версии FPC.

FPC_FULLVERSION

Содержит весь номер версии FPC (как единый номер), который может использоваться для сравнения. Для FPC 2.2.4 он будет 20204.

ENDIAN_LITTLE

Определено, если целевой процессор Free Pascal имеет прямой порядок байтов (80x86, Alpha, ARM ).

ENDIAN_BIG

Определено, если целевой процессор Free Pascal имеет обратный порядок байтов (680x0, PowerPC, SPARC, MIPS ).

FPC_DELPHI

Free Pascal в режиме Delphi, либо используется переключатель компилятора -MDelphi или директива $MODE DELPHI.

FPC_OBJFPC

Free Pascal в режиме OBJFPC, либо используется переключатель компилятора -Mobjfpc или директива $MODE OBJFPC.

FPC_TP

Free Pascal в режиме Turbo Pascal, либо используется переключатель компилятора -Mtp или директива $MODE TP.

FPC_GPC

Free Pascal в режиме GNU Pascal, либо используется переключатель компилятора -SP или директива $MODE GPC.

ПРИМЕЧАНИЕ

Определения ENDIAN_LITTLE и ENDIAN_BIG добавлены, начиная с версии Free Pascal 1.0.5.

Таблица G.2. Возможные определения процессора (CPU) при компиляции с использованием FPC.

Определение

Когда определено

CPU86

Free Pascal целевой процессор Intel 80x86 или совместимый.

CPU87

Free Pascal целевой процессор Intel 80x86 или совместимый.

CPU386

Free Pascal целевой процессор Intel 80386 или старше.

CPUI386

Free Pascal целевой процессор Intel 80386 или старше.

CPU68K

Free Pascal целевой процессор Motorola 680x0 или совместимый.

CPUM68K

Free Pascal целевой процессор Motorola 680x0 или совместимый.

CPUM68020

Free Pascal целевой процессор Motorola 68020 или старше.

CPU68

Free Pascal целевой процессор Motorola 680x0 или совместимый.

CPUSPARC32

Free Pascal целевой процессор SPARC v7 или совместимый.

CPUSPARC

Free Pascal целевой процессор SPARC v7 или совместимый.

CPUALPHA

Free Pascal целевой процессор Alpha AXP или совместимый.

CPUPOWERPC

Free Pascal целевой процессор 32-битный или 64-битный PowerPC или совместимый.

CPUPOWERPC32

Free Pascal целевой процессор 32-битный PowerPC или совместимый.

CPUPOWERPC64

Free Pascal целевой процессор 64-битный PowerPC или совместимый.

CPUX86_64

Free Pascal целевой процессор AMD64 или Intel 64-битный.

CPUAMD64

Free Pascal целевой процессор AMD64 или Intel 64-битный.

CPUX64

Free Pascal целевой процессор AMD64 или Intel 64-битный.

CPUIA64

Free Pascal целевой процессор Intel itanium 64-битный.

CPUARM

Free Pascal целевой процессор ARM 32-битный.

CPUAVR

Free Pascal целевой процессор AVR 16-битный.

CPU16

Free Pascal целевой процессор 16-битный.

CPU32

Free Pascal целевой процессор 32-битный.

CPU64

Free Pascal целевой процессор 64-битный.

CPU8086

указывает на 16-битную платформу на процессоре x86 (i8086)

CPUI8086

указывает на 16-битную платформу на процессоре x86 (i8086)

Таблица G.3. Возможные определения плавающей точки (FPU) при компиляции с использованием FPC.

Определение

Когда определено

FPUSOFT

Программная эмуляция FPU (все типы).

FPUSSE64

SSE64 FPU на Intel I386 и выше, AMD64.

FPUSSE

SSE инструкции на Intel I386 и выше.

FPUSSE2

SSE 2 инструкции на Intel I386 и выше.

FPUSSE3

SSE 3 инструкции на Intel I386 и выше, AMD64.

FPULIBGCC

GCC библиотека эмуляции FPU на ARM и M68K.

FPU68881

68881 на M68K.

FPUFPA

FPA на ARM.

FPUFPA10

FPA 10 на ARM.

FPUFPA11

FPA 11 на ARM.

FPUVFP

VFP на ARM.

FPUX87

X87 FPU на Intel I386 и выше.

FPUITANIUM

На Intel Itanium.

FPUSTANDARD

На PowerPC (32/64 bit).

FPUHARD

На Sparc.

Таблица G.4. Возможные определения компиляции с целевой ОС.

Целевая ОС

Определение

linux

LINUX, UNIX

freebsd

FREEBSD, BSD, UNIX

netbsd

NETBSD, BSD, UNIX

sunos

SUNOS, SOLARIS, UNIX

go32v2

GO32V2, DPMI

реальный режим 16 бит
MS-DOS

MSDOS (2.7.1 и выше)

os2

OS2

emx

OS2, EMX

Windows (all)

WINDOWS

Windows 32-bit

WIN32, MSWINDOWS

Windows 64-bit

WIN64, MSWINDOWS

Windows (winCE)

WINCE, UNDER_CE, UNICODE

Classic Amiga

AMIGA

Atari TOS

ATARI

Classic Macintosh

MACOS

PalmOS

PALMOS

BeOS

BEOS, UNIX

QNX RTP

QNX, UNIX

Mac OS X

BSD, DARWIN, UNIX

В 16 битной модели памяти MS-DOS, для компиляции программы, используется одно из FPC_MM_TINY, FPC_MM_SMALL,FPC_MM_MEDIUM, FPC_MM_COMPACT,FPC_MM_LARGE, FPC_MM_HUGE.

ПРИМЕЧАНИЕ

Определение UNIX было добавлено, начиная с версии Free Pascal 1.0.5. Операционные системы BSD больше не определяют LINUX, начиная с версии 1.0.7.