我在谈论Scilab< - > C包装器的示例:http://www.scilab.org/doc/intro/node89.html。
奇怪的是这一部分:
int intsfoubare(fname)
char *fname;
{
....(some code)
}
这是某种函数定义,但我真的不明白char * fname对于fname也有什么好处,因为参数对我没有意义。
有人能解释一下吗?
[开始哭] 一般来说Scilabs文档是一个负面的例子,但是当涉及到C接口时,它更糟糕。 [哭泣]
谢谢!
答案 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