ric*_*apo 2 c c++ gcc c99 c++98
这是用GCC(带-std = c99)和G ++(带-std = c ++ 98)编译的代码:
void fun()
{}
int main()
{
fun(1,2,3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
GCC成功编译了代码,但G ++提出了这个问题:
error: too many arguments to function ‘int fun()’
我完全感到困惑.
我知道C++应该与C兼容,但这个案例表明我不兼容.这种情况是通过设计发生的?
在C中,空参数列表意味着您不指定该函数所使用的参数数量.要定义具有0个参数的函数,可以将其(void)用作参数列表.在C++中,空参数列表表示该函数采用0参数,因此,在这种情况下,C和C++不兼容.
我知道C++应该与C兼容,但这个案例表明我不兼容.这种情况是通过设计发生的?
虽然在许多情况下C++与C兼容,但事实并非如此.其他示例是来自void*(在C中允许但在C++中不允许)和关键字的隐式转换(在C中使用像class变量名这样的东西是完全有效的,但显然不是在C++中它是关键字).是的,这是设计的.
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |