API와 ABI 버전 붙이기¶
빌드 시간 버전 상수¶
CPython은 다음 매크로에서 버전 번호를 노출합니다. 이는 구축 된 버전 코드에 해당한다는 점에 유의하십시오. 런타임 에 사용된 버전은 Py_Version 을 참조하십시오.
버전별 API 및 ABI 안정성에 대한 논의는 :ref:`stable`을 참조하십시오.
-
PY_MAJOR_VERSION¶
3.4.1a2의3.
-
PY_MINOR_VERSION¶
3.4.1a2의4.
-
PY_MICRO_VERSION¶
3.4.1a2의1.
-
PY_RELEASE_LEVEL¶
3.4.1a2의a. 알파는0xA, 베타는0xB, 배포 후보는0xC, 최종은0xF가 될 수 있습니다.완벽을 위해, 값은 다음과 같은 매크로로 사용할 수 있습니다:
PY_RELEASE_LEVEL_ALPHA(0xA),PY_RELEASE_LEVEL_BETA(0xB),PY_RELEASE_LEVEL_GAMMA(0xC), 및PY_RELEASE_LEVEL_FINAL(0xF).
-
PY_RELEASE_SERIAL¶
3.4.1a2의2. 최종 배포는 0.
-
PY_VERSION_HEX¶
하나의 정수로 인코딩된 파이썬 버전 번호입니다. 인코딩 세부 정보는 :c:func:`Py_PACK_FULL_VERSION`을 참조하십시오.
숫자 비교에 사용합니다. 예를 들어,
#if PY_VERSION_HEX >= ...와 같습니다.
-
PY_VERSION¶
The Python version as a string, for example,
"3.4.1a2".
이 매크로는 :source:`Include/patchlevel.h`에 정의되어 있습니다.
런타임 버전¶
비트 패킹 매크로¶
-
uint32_t Py_PACK_FULL_VERSION(int major, int minor, int micro, int release_level, int release_serial)¶
- 상의 안정 ABI 버전 3.14 이후로.
다음 구조로 단일 32비트 정수로 인코딩된 주어진 버전을 반환합니다:
인자
비트 수
비트 마스크
비트 시프트
예시 값
3.4.1a23.10.0major
8
0xFF00000024
0x030x03minor
8
0x00FF000016
0x040x0Amicro
8
0x0000FF008
0x010x00release_level
4
0x000000F04
0xA0xFrelease_serial
4
0x0000000F0
0x20x0예:
버전
Py_PACK_FULL_VERSION인자인코딩된 버전
3.4.1a2(3, 4, 1, 0xA, 2)0x030401a23.10.0(3, 10, 0, 0xF, 0)0x030a00f0인자에서 범위를 벗어나는 비트는 무시됩니다. 즉, 매크로는 다음과 같이 정의될 수 있습니다:
#ifndef Py_PACK_FULL_VERSION #define Py_PACK_FULL_VERSION(X, Y, Z, LEVEL, SERIAL) ( \ (((X) & 0xff) << 24) | \ (((Y) & 0xff) << 16) | \ (((Z) & 0xff) << 8) | \ (((LEVEL) & 0xf) << 4) | \ (((SERIAL) & 0xf) << 0)) #endif
Py_PACK_FULL_VERSION``은 주로 ``#if지시문을 사용하기 위한 매크로이지만, 내보내기된 함수로도 사용할 수 있습니다.Added in version 3.14.