【发布时间】:2017-05-03 13:56:27
【问题描述】:
C 专家我正在尝试学习 c,而我的 hp-ux 上的编译器使用 K & R
我一直有
- 第 32 行:错误 1584:不一致的类型声明:“Usage”
- 第 33 行:错误 1705:函数原型是 ANSI 功能
- 警告 419:为数组 argv 分配零长度存储
int main(c,v)
{
int result;
int errno;
int argc;
char *argv[];
if(argc < 3 || argc > 3) {
Usage(argv[0]);
exit(1);
}
system("clear");
result = Search_in_File(argv[1], argv[2]);
if(result == -1) {
perror("Error");
printf("Error number = %d\n", errno);
exit(1);
}
return(0);
}
void Usage(char *filename)
{
printf("Usage: %s <file> <string>\n", filename);
printf("%s version 1.0 \nCopyright(c) CodingUnit.com\n", filename);
}
提前感谢您的任何意见
【问题讨论】:
-
缩进.............
-
int main(c,v)=>int main(argc,argv) -
另外,您正在混合 ANSI 和非 ANSI 样式。 K&R:这艘船已经航行了。请使用ANSI
-
@Jean-François Fabre:那就是 K&R 中的
int main(c,v) int c; char **v; { ...。int c可以省略。当然,名称无关紧要,但参数声明应该在第一个{之前。像在 OP 的代码中那样在本地声明它们是行不通的。 -
确实! OP 的 K&R 也生锈了……好吧,没关系,让我们不要使用它