[過去ログ]
【まず1嫁】くだすれPython(超初心者用) その59 (1002レス)
【まず1嫁】くだすれPython(超初心者用) その59 http://mevius.5ch.net/test/read.cgi/tech/1689241721/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
688: デフォルトの名無しさん [sage] 2024/06/19(水) 22:24:53.92 ID:jr8KvPbD ctypesで構造体宣言するときに、以下のようにc側が不完全型の配列定義であった場合は、どのように宣言すればよいでしょうか。 typedef struct aa { uint32 eListType; uint16 wRes; uint16 wOdList[]; } class aa(Structure): _fields_ = [("eListType",c_uint32), ("wRes",c_uint16), ("wOdList",???) ] http://mevius.5ch.net/test/read.cgi/tech/1689241721/688
691: デフォルトの名無しさん [] 2024/06/20(木) 17:09:09.89 ID:F8Q2DGBi >>688 C の方が malloc(sizeof(struct aa) + N) みたいにやってるだろうから とりあえず N の最大値くらい確保 http://mevius.5ch.net/test/read.cgi/tech/1689241721/691
693: デフォルトの名無しさん [sage] 2024/06/20(木) 18:12:29.06 ID:pudWG0gF >>688 ("wOdList", POINTER(c_uint16)) a = aa() a.wOdList = (c_uint16 * size)() wResがwOdListのsizeだったりするのかな? http://mevius.5ch.net/test/read.cgi/tech/1689241721/693
698: デフォルトの名無しさん [sage] 2024/06/21(金) 15:17:35.67 ID:M8EEKVG+ 少なくとも >>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 http://mevius.5ch.net/test/read.cgi/tech/1689241721/698
702: 688 [sage] 2024/06/21(金) 19:26:17.13 ID:HIobLuWQ みなさんありがとうございます 結局固定長で適当に宣言しとけば良いってことですかね 確かにc側でmalloc使ってそうな気がします http://mevius.5ch.net/test/read.cgi/tech/1689241721/702
710: デフォルトの名無しさん [sage] 2024/06/22(土) 13:39:16.54 ID:o/eWDsQ7 >>688 への回答として >>693 は全く不適切 判っててわざと間違ってるんだろうが全く別物 初心者に嘘を教えるのは良くない https://ideone.com/YUADDB #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; } http://mevius.5ch.net/test/read.cgi/tech/1689241721/710
719: デフォルトの名無しさん [sage] 2024/06/23(日) 12:29:27.23 ID:NuUT7kNv >688 >ctypesで構造体宣言するときに、 >以下のようにc側が不完全型の配列定義であった場合は、 >どのように宣言すればよいでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1689241721/719
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.036s