2 lcmsx lcmsx 于 2017.09.11 16:52 提问

C++ 这个语法什么意思?
c++

代码如下:
int do_extract_onefile(uf,filename,opt_extract_without_path,opt_overwrite,password)
unzFile uf;
const char* filename;
int opt_extract_without_path;
int opt_overwrite;
const char* password;
{
int err = UNZ_OK;
if (unzLocateFile(uf,filename,CASESENSITIVITY)!=UNZ_OK)
{
printf("file %s not found in the zipfile\n",filename);
return 2;
}

if (do_extract_currentfile(uf,&opt_extract_without_path,
                                  &opt_overwrite,
                                  password) == UNZ_OK)
    return 0;
else
    return 1;

}

可以看到,在实现这个函数的时候,形参里面只有名称,没有类型,类型是在()后面,且在函数体{}前面。 这个是什么写法,望赐教!

2个回答

fight_in_dl
fight_in_dl   Ds   Rxr 2017.09.12 06:02
已采纳

这种函数参数列表的写法是旧的格式(称为 K&R style )。
虽然C89/C90以及C99标准仍然支持这种写法。
但不建议在自己的代码中这样写,毕竟已经属于过时的风格。

如果对您有帮助,请采纳答案好吗,谢谢!

lcmsx
lcmsx 多谢了哈! 一直不知道怎么回事,但是还想问一句,zlib.dll的源码中有这样的写法,但是自己这样写的时候VS就会报错。zlib的源码那样写不会报错,而且也可以编译通过。
2 个月之前 回复
caozhy
caozhy 正解。还有把函数原型定义在调用它的函数里的。现在的大学还在教这些,还有main函数没有返回值的,唉,
2 个月之前 回复
u010136832
u010136832   2017.09.11 17:40

这个是函数定义的一种,确切的说这种写法是C语言中特有的,在C90标准的时候基本所有的函数的定义都是这种写法,C99之后遍不在这么写了,勿惊!

Csdn user default icon
上传中...
上传图片
插入图片