qul*_*xao -2 c program-entry-point
此代码是否遵循C标准(例如C89,C99,C10x)?
void
main(int a,int b, int c, int d,char *msg){
if(d==1){
printf("%s\n",msg);
}else{
main(1,2,3,1,&"Hello Stackoverflow");
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有,为什么?
有一个错误:&"Hello Stackoverflow"没有类型char*,所以你不应该将它传递给期望该类型的函数.
除此之外,标准允许该程序作为特定于实现的扩展,但编译器可以自由拒绝它.
在程序启动时调用的函数被命名
main.该实现声明此函数没有原型.它应定义为返回类型int且没有参数:
int main(void) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
或者有两个参数(这里称为
argc和argv,虽然可以使用任何名称,因为它们是声明它们的函数的本地名称):
int main(int argc, char *argv[]) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
或同等学历; 或者以某种其他实现定义的方式.
(2011年标准,最新草案第5.1.2.2.1节,重点补充.)
mainC标准中没有禁止递归调用.这与C++有所不同,C++确实是非法的.
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |