[過去ログ] 【まず1嫁】くだすれPython(超初心者用) その59 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
688(6): デフォルトの名無しさん [sage] 2024/06/19(水) 22:24:53.92 ID:jr8KvPbD(1) AAS
ctypesで構造体宣言するときに、以下のようにc側が不完全型の配列定義であった場合は、どのように宣言すればよいでしょうか。
typedef struct aa
{
uint32 eListType;
uint16 wRes;
uint16 wOdList[];
}
class aa(Structure):
_fields_ = [("eListType",c_uint32),
("wRes",c_uint16),
("wOdList",???)
]
691: デフォルトの名無しさん [] 2024/06/20(木) 17:09:09.89 ID:F8Q2DGBi(1) AAS
>>688
C の方が malloc(sizeof(struct aa) + N) みたいにやってるだろうから
とりあえず N の最大値くらい確保
693(3): デフォルトの名無しさん [sage] 2024/06/20(木) 18:12:29.06 ID:pudWG0gF(1) AAS
>>688
("wOdList", POINTER(c_uint16))
a = aa()
a.wOdList = (c_uint16 * size)()
wResがwOdListのsizeだったりするのかな?
698(1): デフォルトの名無しさん [sage] 2024/06/21(金) 15:17:35.67 ID:M8EEKVG+(3/3) AAS
少なくとも >>688 の質問に対して正しい答えは
from ctypes import *
class aa(Structure):
_fields_ = [('a', c_uint32), ('b', POINTER(c_uint16))]
a = aa()
a.b = (c_uint16 * 4)() # これは間違い
sizeof(a) # 16
class bb(Structure):
_fields_ = [('a', c_uint32), ('b', (c_uint16 * 4))]
b = bb()
sizeof(b) # 12
class cc(Structure):
_fields_ = [('a', c_uint32), ('b', (c_uint16 * 8))]
c = cc()
sizeof(c) # 20
702: 688 [sage] 2024/06/21(金) 19:26:17.13 ID:HIobLuWQ(1) AAS
みなさんありがとうございます
結局固定長で適当に宣言しとけば良いってことですかね
確かにc側でmalloc使ってそうな気がします
710(1): デフォルトの名無しさん [sage] 2024/06/22(土) 13:39:16.54 ID:o/eWDsQ7(1) AAS
>>688 への回答として >>693 は全く不適切
判っててわざと間違ってるんだろうが全く別物
初心者に嘘を教えるのは良くない
外部リンク:ideone.com
#include <stdio.h>
#include <stdlib.h>
int x;
struct A {
int a;
int b[];
};
struct B {
int a;
int *b;
};
int main(void) {
printf("%zu\n", sizeof(x));
printf("%zu\n", sizeof(struct A));
printf("%zu\n", sizeof(struct B));
struct B b = {0};
b.b = (int *)malloc(4 * sizeof(int));
free(b.b);
/*
struct A a = {0};
a.b = (int *)malloc(4 * sizeof(int)); // compile error
free(a.b); // don't free (may be cause to runtime error)
*/
return 0;
}
719: デフォルトの名無しさん [sage] 2024/06/23(日) 12:29:27.23 ID:NuUT7kNv(1/2) AAS
>688
>ctypesで構造体宣言するときに、
>以下のようにc側が不完全型の配列定義であった場合は、
>どのように宣言すればよいでしょうか。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.159s*