私はCでドライバのDLLを開発しました。私はC++でテストプログラムを書いていて、DLLは正常に動作します。python ctype再帰的構造
今、私はPythonを使ってこのDLLを掘り下げたいと思います。私は正常にユーザー定義のC構造のほとんどを隠しましたが、C構造を使用する必要がある点が1つあります。私はむしろPythonに新しいので、私は物事を間違って取得することがあります。
私のアプローチは、ctypeを使用してPythonでいくつかの構造体を再定義し、変数をDLLに渡すことです。しかし、これらのクラスで私が続く
class EthercatDatagram(Structure):
_fields_ = [("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", c_char_p),
("work_count", c_ushort),
("next_command", EthercatDatagram)]
パーサがエラーを返すようEthercatDatagram内、EthercatDatagramが既に定義されていないので、これは、失敗したとして、再帰的な型を含むカスタムリンクリストを持っています。
私のDLLが正しく理解できるように、このリンクされたリストをPythonでどのように表現すればよいですか?
"は(どの言語でも)可能ではありません" - これはc/C++/java形式の構造体やクラスについては当てはまりますが、代数的データ型の言語では単なる可能性ではなく非常に一般的です。例えば'データリストa = Cons a(List a)| MLファミリ言語(ocaml/haskell/SML/etc)のNilである。 – sinelaw