首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Nimrod中使用函数指针?

如何在Nimrod中使用函数指针?
EN

Stack Overflow用户
提问于 2014-05-05 18:53:24
回答 1查看 3K关注 0票数 8

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

我试过的是:

代码语言:javascript
复制
type fptr = (proc(int):int)

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

var myf : fptr = f

echo myf(0)

但是,当我试图编译时,我得到:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-05 22:08:56

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

代码语言:javascript
复制
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的开发人员报告了您发现的错误。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23479655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档