Opened 12 years ago

Last modified 12 years ago

#173 assigned バグ

関数ポインタが正常に呼び出せない

Reported by: dai Owned by: dai
Priority: 最優先-blocker Milestone: AB5 CP6
Component: Compiler Version:
Keywords: Cc:

Description

Function MyFunc1() As Long
    return 1
End Function

Dim lpFunc = AddressOf(MyFunc1)
Dim i As Long
Dim buf[100] As SByte

i=lpFunc()
wsprintf(buf,"%d",i)
MessageBox(0,buf,"test",MB_OK)

戻り値がおかしい。

Change History (2)

comment:1 Changed 12 years ago by dai

Status: newassigned

comment:2 Changed 12 years ago by dai

どうやら、AddressOf関数の戻り値がVoidPtrになっている模様。 ここは、Dim宣言で関数ポインタ型を指定すれば正常動作が望める(下記コード参照)。

Function MyFunc1() As Long
    return 1
End Function

TypeDef MYFUNC = *Function() As Long

Dim lpFunc = AddressOf(MyFunc1) As MYFUNC
Dim i As Long
Dim buf[100] As SByte

i=lpFunc()
wsprintf(buf,"%d",i)
MessageBox(0,buf,"test",MB_OK)

AB CP5では、上記事項は制約とし、次回リリースで解消する。 解消の方法としては、AddressOf関数が適切な関数ポインタ型を返すようにする。

Note: See TracTickets for help on using tickets.