Tôi đã phát triển một DLL cho một trình điều khiển trong C. Tôi đã viết một chương trình thử nghiệm trong C++ và DLL hoạt động tốt.python ctype cấu trúc đệ quy
Bây giờ tôi muốn can thiệp với DLL này bằng cách sử dụng Python. Tôi đã ẩn thành công hầu hết các cấu trúc C do người dùng định nghĩa nhưng có một điểm mà tôi phải sử dụng các cấu trúc C. Tôi khá mới để python vì vậy tôi có thể nhận được những điều sai trái.
Cách tiếp cận của tôi là xác định lại một vài cấu trúc trong python bằng cách sử dụng ctype sau đó chuyển biến cho DLL của tôi. Tuy nhiên, trong những lớp tôi có một danh sách tùy chỉnh liên kết, trong đó có các loại đệ quy như sau
class EthercatDatagram(Structure):
_fields_ = [("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", c_char_p),
("work_count", c_ushort),
("next_command", EthercatDatagram)]
này thất bại, vì EthercatDatagram bên trong, EthercatDatagram chưa được xác định để phân tích cú pháp trả về một lỗi.
Tôi nên trình bày danh sách được liên kết này bằng python để DLL của tôi hiểu chính xác như thế nào?
"là không thể (bằng bất kỳ ngôn ngữ nào)" - đó là đúng về c/C++/java-phong cách structs hoặc các lớp học, nhưng trong ngôn ngữ với các loại dữ liệu đại số nó không chỉ có thể nhưng cũng rất phổ biến. ví dụ. 'data List a = Nhược điểm a (Danh sách a) | Nil' trong ngôn ngữ ML-gia đình (ocaml/haskell/SML/etc). – sinelaw