Scilab< - > C接口中的奇怪函数定义

时间:2009-11-27 12:02:43

标签: c function wrapper scilab

我在谈论Scilab< - > C包装器的示例:http://www.scilab.org/doc/intro/node89.html

奇怪的是这一部分:

int intsfoubare(fname) 
 char *fname;
   {
     ....(some code)
   }

这是某种函数定义,但我真的不明白char * fname对于fname也有什么好处,因为参数对我没有意义。

有人能解释一下吗?

[开始哭] 一般来说Scilabs文档是一个负面的例子,但是当涉及到C接口时,它更糟糕。 [哭泣]

谢谢!

4 个答案:

答案 0 :(得分:1)

我相信你所看到的是K& R风格的功能声明。它大约相当于int intsfoubare(char *fname) { ... },但在调用函数时允许更多的灵活性。有关详细信息,请参阅this post

答案 1 :(得分:0)

我不知道Scilab,但我懂法语!

对于“foobar”来说,“foubare”听起来像法语。这可能是某个开发人员(意外地?)留下的虚拟或测试功能的情况。

fname听起来像文件名的名称,作为字符指针传入。

也许这会有所帮助。

至于使用fname的方式:在较旧的“经典”C语言定义中,在括号中只放置传递参数的名称(实际上仍然是合法的),并且稍后声明它的类型。你不再看到太多了,但它也不是完全错误的。只是假装括号说(char *fname)

答案 2 :(得分:0)

这是旧式(在1989年ANSI / ISO标准化C之前)的功能定义。 现在有了原型,它被写成(虽然旧的风格仍被接受)

int intsfoubare(char *fname)
{
    ....(some code)
}

答案 3 :(得分:0)

为了记录,关于这个主题的Scilab文档现在更好了!

请参阅:http://help.scilab.org/docs/current/en_US/api_scilab.html