Python ctypes Notlarım – 7

Merhaba arkadaşlar, bu yazımda / notlarım da ctypes ‘da daha doğrusu C’de olan Struct ve Union yapılarının kullanıma göz gezdireceğiz. Struct; ctypes.Structure ve Union; ctypes.Union nesnesi oluştururken sınıf üzerinden türetmemiz gerekmektedir. Yani python’da bu iki veri tipinin kullanımı sınıf oluşturmaktan geçer. Ve, verilerin dizimi _fields_ özelliğine liste halinde ikili demet şeklinde (değişken_adı, ctypes_veri_tipi) yazılması gerekir.

Veri tipleri, python ctypes veri tipleri (c_int gibi), structure, union, array ve sizin oluşturduğunuz veri tipleri olabilir.

Kullanıma gelecek olursak oldukça basit;

Python

Çıktı

 

Birden fazla ctypes Struct veri tipini içe içe kullanarak bağlantılar oluşturabilirsiniz. Yukarıdaki Nokta ctypes struct verimizi kullanarak bir örnek yapalım. Şöyle ki;

Python

Çıktı

Aynı zamanda python ctypes struct pragma pack kullanımına _pack_ niteliği ile izin vermektedir. Pragma pack’i kısaca hatırlamak gerekirse; Örneğin #pragma pack(8) yapıların bellekte 8’in katları olan adreslere yerleşmesini söyler.

C

Python

Union, bilindiği üzere Struct yapısıyla özellikleri birbirine çok benzemekle birlikte aralarındaki fark Union‘un sadece değişken oluşturabilmesidir. Yani union ile oluşturulan bir değişken program boyunca tektir.

Union ve Struct yapılarının birlikte örnek kullanımını hem C hem de Python üzerinde göz gezdirsek yeterli olacaktır.

C

Python

 

Leave a Reply

Your email address will not be published. Required fields are marked *