【发布时间】:2012-04-13 23:49:58
【问题描述】:
今天 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”时,我没有包括参数。类型,所以会出现错误,但 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); 不是函数定义吗?
【问题讨论】:
-
另外,当你尝试
printf的返回值sum(1,2)时,你会遇到一些问题。请改用printf("%d", sum(1,2))。
标签: c clang function-prototypes