替代 SICStus Prolog FFI SP_define_c_predicate()
Alternative SICStus Prolog FFI SP_define_c_predicate()
我粘贴了 SICStus Prolog 4.3.3
SP_define_c_predicate()
按原样采样——并且... 失败:
$ /usr/local/sicstus4.3.3/bin/splfr square.pl square.c
square.c: In function ‘square_it’:
square.c:7:3: error: unknown type name ‘SP_WORD’
SP_WORD arg1;
^
square.c:13:3: warning: passing argument 2 of ‘sp_GlobalSICStus_square->dispatch_API_SICSTUS_H->pSP_get_integer’ from incompatible pointer type [enabled by default]
if (!SP_get_integer(tmp,&arg1))
^
square.c:13:3: note: expected ‘SP_integer *’ but argument is of type ‘int *’
Uncaught exception from user code:
! Could not compile square.c
到目前为止,我为 SP_WORD
grep 了 SICStus C 包含文件——无济于事。
你能给我一些提示吗?提前致谢!
(仅供参考:我正在使用 x86-64 Linux Mint 17 和 gcc 版本 4.8.4。)
示例应该使用 SP_integer
而不是内部类型 SP_WORD
。
我粘贴了 SICStus Prolog 4.3.3
SP_define_c_predicate()
按原样采样——并且... 失败:
$ /usr/local/sicstus4.3.3/bin/splfr square.pl square.c square.c: In function ‘square_it’: square.c:7:3: error: unknown type name ‘SP_WORD’ SP_WORD arg1; ^ square.c:13:3: warning: passing argument 2 of ‘sp_GlobalSICStus_square->dispatch_API_SICSTUS_H->pSP_get_integer’ from incompatible pointer type [enabled by default] if (!SP_get_integer(tmp,&arg1)) ^ square.c:13:3: note: expected ‘SP_integer *’ but argument is of type ‘int *’ Uncaught exception from user code: ! Could not compile square.c
到目前为止,我为 SP_WORD
grep 了 SICStus C 包含文件——无济于事。
你能给我一些提示吗?提前致谢!
(仅供参考:我正在使用 x86-64 Linux Mint 17 和 gcc 版本 4.8.4。)
示例应该使用 SP_integer
而不是内部类型 SP_WORD
。