Имам прост Astruct.pyx с дефиниция на структура (Astruct.pxd):
cdef struct A:
int x
int y
int z
И функция на Cython, която го използва (struct_test.pyx):
from random import randint
from Astruct cimport A
def do():
N = 1000000
M = 65535
As = []
total = 0
for i in xrange(N):
cdef A a
a.x = randint(0, M)
a.y = randint(0, M)
a.z = randint(0, M)
As.append(a)
for i in xrange(N):
total += As[i].x + As[i].y + As[i].z
print total
Въпреки това, когато се опитам да създам struct_test.pyx, получавам тази грешка: „cdef statement not allowed here“, сочеща към „cdef A a“. Не се оплаква от друга дефиниция на променлива A, ако е извън цикъла, но не разбирам какво е толкова специално за цикъла for.