古いソースコードではANSI C標準以前の関数宣言がある。
旧関数宣言
1 関数定義の引数の型が分離している
例
void foo(a, b, c)
int a;
int b;
int c;
{
/* 処理 */
}
2 関数宣言の引数は書かない(書かなくても良い?)
例
void foo();
何が便利(?)かというとこのような使い方
# define FLOAT_TYPE
/* old declaration */
# if defined (FLOAT_TYPE)
float
# else
int
# endif
add();
/* old definition */
# if defined (FLOAT_TYPE)
float
# else
int
# endif
add(a, b)
# if defined (FLOAT_TYPE)
float a;
float b;
# else
int a;
int b;
# endif
{
return a + b;
}
とこのようにすると、一つの関数で型を使い分けできます。
なぜ紹介したかというと、この形式を推奨するのではなく
昔の記述の読み方がわからない人向けに書きました。
私も始めて見た時何が書いてあるか分かりませんでした・・・