2016-04-14 16 views
0

nasıl (sadece enum değerler çeşitli) sabitler ilan edebilir? Bir .pyx dosyası içindeİthalat olmayan tamsayı sabit

, ben beyan ve sabitleri kullanabilirsiniz:

DEF FavouriteFood = "spam" 
DEF ArraySize = 42 
print(FavouriteFood) 
print(ArraySize) 

Ve .pxd dosyası, elimden share C functions veya share types kullanarak.

Ancak sabitleri nasıl paylaşabilirim? Dokümanlar, very limited way of doing this with anonymous enums belirtmektedir, ancak bu değerler yalnızca ints olabilir. Örneğin, bir sabit dize veya .pyx dosyasına nasıl aktarabilirim?

cevap

1
sadece sabit

cdef inline const char* GetFavouriteFood(): 
    return "spam" 

cdef inline float GetHowMuch(): 
    return 4.5 

Diğer seçenek (sizin pxd olarak) daha sonra bir başlık dosyasına C sabitleri tanımlamak olacaktır döner Sen çok kısa bir satır içi işlevi (in the pxd file) de kullanabilir

do

cdef extern from "myconstants.h": 
    const char* FavouriteFood 
    float HowMuch 

C derleyicisi (Cython yerine), sıkışıklığı zorlar, böylece değiştirmeyi denerseniz, bu aşamada hatalar görünecektir. Bu, fazladan bir dosya oluşturmayı gerektiriyor, bu yüzden kişisel olarak inline işlev yaklaşımını tercih ediyorum.