3
我有一个函数,可以用2种方式写。为什么func()和func(void)不同
void function(void) {
// operations....
}
和
void function() {
// operations......
}
两个函数是相同的原型的。为什么我们必须在函数定义中提到void
作为参数?
我有一个函数,可以用2种方式写。为什么func()和func(void)不同
void function(void) {
// operations....
}
和
void function() {
// operations......
}
两个函数是相同的原型的。为什么我们必须在函数定义中提到void
作为参数?
不,两者都有不同的原型。
编译下面的程序,你会明白。
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;
}
正确的做法应该说在C和C “无参数” ++是
void function(void);
但是,当我们写
void function();
它在C和C++中意味着一种不同的方式!这意味着“可以采用任何数量的未知类型的参数”,并且在C++中它意味着与函数(void)相同。
有些编译器需要'void'来了解它。 –
@Pazis:有些?所有严格遵守C标准的编译器应该。 – icktoofay
@JEM:'void func()'根本不是*原型。因此,你的断言“两个函数都是相同的原型”简直是错误的。 – AnT