0

我说的是 Scilab<->C 包装器的这个例子:http ://www.scilab.org/doc/intro/node89.html 。

奇怪的是这个:

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

这是某种函数定义,但我真的不明白 char *fname 有什么好处,也只是 fname 作为参数对我来说毫无意义。

有人能解释一下吗?

[开始哭泣] Scilabs 文档通常是一个反面例子,但当涉及到 C 接口时,情况就更糟了。[结束哭泣]

谢谢!

4

4 回答 4

1

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

于 2009-11-27T12:10:53.750 回答
0

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

“foubare”听起来像法语中的“foobar”。这可能是一些开发人员(意外?)留在原地的虚拟或测试功能的情况。

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

也许这会有所帮助。

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

于 2009-11-27T12:08:08.607 回答
0

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

int intsfoubare(char *fname)
{
    ....(some code)
}
于 2009-11-27T12:12:28.973 回答
0

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

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

于 2013-01-06T17:50:06.387 回答