为什么func()和func(void)是不同的

时间:2013-10-06 05:35:49

标签: c function

我有一个功能,可以用2种方式写。

void function(void) {
        // operations....
}

void function() {
       // operations......
}

两个功能都是相同的原型。为什么我们必须在函数定义中提到void作为参数?

2 个答案:

答案 0 :(得分:10)

不,两者都有不同的原型。

编译您将理解的以下程序。

void function1(void)
{
   printf("In function1\n");
}

void function2()
{
   printf("In function2\n");
}

int main()
{
   function1();
   function2(100); //Won't produce any error
   return 0;
}  

计划2:

 #include <stdio.h>
 void function1(void)
 {
    printf("In function1\n");
 }

 void function2()
 {
    printf("In function2\n");
 }

int main()
{
    function1(100);   //produces an error
    function2();
    return 0;
}

答案 1 :(得分:3)

在C和C ++中说“无参数”的正确方法是

void function(void);

但是当我们写

void function();

这意味着在C和C ++中有一点不同的方式!它意味着“可以使用任意数量的未知类型的参数”,而在C ++中它意味着与 function(void)相同。