为什么在params中放空?

RoR*_*RoR 32 c++

将空隙放入params的原因是什么?

为什么不把它留空?

void createLevel(void);

void createLevel();
Run Code Online (Sandbox Code Playgroud)

hal*_*dan 43

void括号是从C在C带空圆括号的函数可以具有任意数量的参数.在C++中它没有任何区别.


Ale*_*ler 15

void在函数参数列表中是过去(C)的遗留物.在C++中,您应该将括号留空.当然,你可以保留void它,如果它让你开心.

在C中,如果声明一个带有空括号的函数,则意味着参数的数量是未知的.void可用于明确表示不需要参数.


Jus*_*ier 10

在C++中没有区别.

以下仅适用于C:

实际上,根据这个帖子:

当你在某个地方声明一个函数func()时,这意味着你没有说出任何关于它的遗骸.另一方面,func(void)表示没有论据

perfect_circle甚至发布了一个精彩的代码示例来说明这一点:

skalkoto@darkstar:~$ cat code.c
#include <stdio.h>

int main()
{
        void func(void);
        func(3);
return 0;
}

void func(int a)
{
        printf("Nothing\n");
}
skalkoto@darkstar:~$ gcc code.c
code.c: In function `main':
code.c:6: error: too many arguments to function `func'
skalkoto@darkstar:~$ cat code1.c
#include <stdio.h>

int main()
{
        void func();
        func(3);
        return 0;
}

void func(int a)
{
        printf("Nothing\n");
}
skalkoto@darkstar:~$ gcc code1.c
skalkoto@darkstar:~$ ./a.out
Nothing
skalkoto@darkstar:~$
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此答案适用于C,但不适用于C++.在C++中,空括号*总是*表示"无参数". (4认同)