今日、Clangはプログラムをコンパイルしようとして、ちょっと奇妙なメッセージをくれました。私はCの経験があまりないので、何か間違ったことをしている可能性がありますが、実際に試したコードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
int sum(a,b);
int main ()
{
printf(sum(1,2));
return 0;
}
int sum (int a, int b)
{
return a + b;
}
お気づきかもしれませんが、関数'sum'を宣言するときは、paramを含めていません。タイプなので、エラーが予想されますが、Clangが私に与える実際のメッセージは次のとおりです。
ind.c:4:9: error: a parameter list without types is only allowed in a function definition
int sum(a,b);
^
ind.c:12:5: error: redefinition of 'sum' as different kind of symbol
int sum (int a, int b)
^
ind.c:4:5: note: previous definition is here
int sum(a,b);
^
2 errors generated.
Clangが関数定義でのみ許可されていると言っている場合、それはどういう意味ですか?int sum(a,b);
関数定義ではありませんか?