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 のドキュメントは今ではかなり良くなっています!

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

于 2013-01-06T17:50:06.387 に答える
0

Scilab はわかりませんが、フランス語はわかります。

"foubare" は "foobar" のフランス語のように聞こえます。これは、一部の開発者が (誤って?) ダミーまたはテスト機能を残した場合に発生する可能性があります。

fname文字ポインタとして渡されたファイル名のように聞こえます。

多分これは少し役立つでしょう。

使用方法についてfname: 古い「古典的な」C 言語の定義では、渡されたパラメーターの名前だけを括弧に入れて、後でその型を宣言することは (実際にはまだ) 合法でした。あまり見かけなくなりましたが、完全に間違っているわけでもありません。かっこが言うふりをして(char *fname)ください。

于 2009-11-27T12:08:08.607 に答える
0

これは古いスタイル (ANSI/ISO が 1989 年に C を標準化する前) の関数の定義です。現在、プロトタイプでは次のように書かれています (古いスタイルはまだ受け入れられていますが)。

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