我在C编程语言中使用char数组有两个不同版本的代码.
第一版:
int main(int argc, char *argv[]) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第二版:
int main(int argc, char *argv) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所有代码编译时没有警告或错误,所以这些代码之间有什么区别?
来自C标准#5.1.2.2.1p1
1程序启动时调用的函数名为main.该实现声明此函数没有原型.它应该使用int的返回类型定义,并且没有参数:
Run Code Online (Sandbox Code Playgroud)int main(void) { /* ... */ }或者有两个参数(这里称为argc和argv,虽然可以使用任何名称,因为它们是声明它们的函数的本地名称):
Run Code Online (Sandbox Code Playgroud)int main(int argc, char *argv[]) { /* ... */ }等价物; 10)或其他一些实施定义的方式.
根据标准,您的第二个版本不正确:
int main(int argc, char *argv) {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用编译gcc器编译时,我收到以下错误消息:
prg.c:1:5: error: second parameter of 'main' (argument array) must be of type 'char **'
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |