background image

return 1;
}

  则进行下面的调用是不合法的:
function(2);

  因为在 C++中,函数参数为 void 的意思是这个函数不接受任何参数。

  我们在 Turbo C 2.0 中编译:
#include "stdio.h"
fun()
{
return 1;
}
main()
{
printf("%d",fun(2));
getchar();
}

  编译正确且输出 1,这说明,在 C 语言中,可以给无参数的函数传送任意类型的参
数,但是在 C++编译器中编译同样的代码则会出错。在 C++中,不能向无参数的函数传送

“‘

任何参数,出错提示 fun‘ : function does not take 1 parameters”。

  所以,无论在 C 还是 C++中,若函数不接受任何参数,一定要指明参数为 void。

 

  规则三 小心使用 void 指针类型

  按照 ANSI(American National Standards Institute)标准,不能对 void 指针进行算法操作,
即下列操作都是不合法的:
void * pvoid;
pvoid++; //ANSI:错误
pvoid += 1; //ANSI:错误
//ANSI 标准之所以这样认定,是因为它坚持:进行算法操作的指针必须是确定知道其指
向数据类型大小的。
//例如:
int *pint;
pint++; //ANSI:正确

  pint++的结果是使其增大 sizeof(int)。

  但是大名鼎鼎的 GNU(GNU‘s Not Unix 的缩写)则不这么认定,它指定 void *的算法操
作与 char *一致。
因此下列语句在 GNU 编译器中皆正确: