FreeBSDのソースコードを読んでいると( radix.hの158〜173行目を参照)、定義の「関数の見出し」に続く変数宣言を見つけました。
これはISOC(C99)で有効ですか?これは、「関数の見出し」内で変数を宣言するだけでなく、本番コードでいつ実行する必要がありますか?なぜここで行われているのですか?
次のような文字列の見出しの関数を参照します。int someFunction(int i, int b) {
それは K&R (pre-ANSI) スタイルのように見えます。有効な C99 ではないと思いますが、彼らは C99 を使用していますか? ジョエル
Cでパラメーターを宣言する「昔ながらの」ANSI以前の方法について言及していると思います。次のようになりました。
int foo(a, b)
int a,
int b
{
/* ... */
}
これは C99 でも有効である可能性があり、下位互換性の理由からコンパイラによって受け入れられる予定ですが、非推奨/古風と見なす必要があります。
ええと。たぶん私はあなたの質問を誤解していますがi
、b
そのスニペットには関数のパラメーターがあります。次のように、関数内で変数を宣言するコンパクトな方法ではありません。
int someFunction() {
int i, b;
を呼び出すときはsomeFunction
、次の引数を渡します。
someFunction(1, 2); // `i` will be `1` and `b` `2` within `someFunction`