【发布时间】:2014-06-21 22:17:20
【问题描述】:
我的程序包含以下代码:
static short index(key)
unsigned char *key;
{
long i, sum = 0;
for (i = 0; key[i]; i++)
sum += key[i];
return(sum % TABLE_SIZE);
}
但是,它给出了以下错误:
table.c:46:14: error: conflicting types for 'index'
static short index(key)
^
我是 C 新手,阅读原型等,但我无法解决问题。
【问题讨论】:
-
a) 为什么要使用这种旧的参数语法? b) 第 46 行是什么?
-
他可能在用一本旧书。
-
你有一个老式(过时的)函数定义。自 1989 年以来,现代等价物是
static short index(unsigned char *key) { /* ... */ }- 除了,正如 merlin2011 的回答所说,您应该选择index以外的名称。没有充分的理由使用旧式的函数声明或定义;总是使用原型。 -
我收到的错误消息是“警告:内置函数‘index’的类型冲突”。您的错误消息中是否包含“内置”一词?你用的是什么编译器?如果是gcc,什么版本(
gcc --version)?