gpt4 book ai didi

nim-lang - 如何在 Nimrod 中使用函数指针?

转载 作者:行者123 更新时间:2023-12-02 07:58:51 25 4
gpt4 key购买 nike

是否可以在 Nimrod 中使用函数指针?

我尝试过的是:

type fptr = (proc(int):int)

proc f(x:int): int =
result = x+1

var myf : fptr = f

echo myf(0)

但是当我尝试编译时我得到:

Hint: added path: 'C:\Users\Peter\.babel\pkgs\' [Path]
Hint: used config file 'C:\Program Files (x86)\Nimrod\config\nimrod.cfg' [Conf]
Hint: system [Processing]
Hint: hello3 [Processing]
Error: internal error: GetUniqueType
Traceback (most recent call last)
nimrod.nim nimrod
nimrod.nim handleCmdLine
main.nim mainCommand
main.nim commandCompileToC
modules.nim compileProject
modules.nim compileModule
passes.nim processModule
passes.nim processTopLevelStmt
cgen.nim myProcess
ccgstmts.nim genStmts
ccgexprs.nim expr
ccgstmts.nim genStmts
ccgexprs.nim expr
ccgstmts.nim genVarStmt
ccgstmts.nim genSingleVar
cgen.nim assignGlobalVar
ccgtypes.nim getTypeDesc
ccgtypes.nim getTypeDescAux
ccgtypes.nim genProcParams
cgen.nim fillLoc
ccgutils.nim getUniqueType
msgs.nim internalError
msgs.nim rawMessage
msgs.nim rawMessage
msgs.nim handleError

最佳答案

当然你可以使用指针,唯一的问题是你忘记定义第一个参数的名称,不幸的是这会使编译器崩溃。以下示例有效:

type fptr = (proc(x: int):int)

proc f(x:int): int =
result = x+1

var myf : fptr = f

echo myf(0)

请注意,您可以省略 myf 变量声明中的类型。您还可以省略 proc 类型定义周围的括号。我已将您发现的错误报告给开发人员:https://github.com/Araq/Nimrod/issues/1183 .

关于nim-lang - 如何在 Nimrod 中使用函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com