请解释C中的以下代码片段是如何有效的
int main(c, v) char *v; int c;{
//program body
}
我偶然发现了国际混淆C代码竞赛中的一些例子,我只是好奇。
答案 0 :(得分:9)
它是K&R - 样式函数声明。见Function declaration: K&R vs ANSI
但是,我认为它没有main()
的有效签名,因为v
的类型不正确。见What are the valid signatures for C's main() function?
答案 1 :(得分:2)
这是ANSI之前的函数声明,如果你指的是为什么char * v; INT;在括号之外。
答案 2 :(得分:0)
这是“K& R C”,其中函数参数在参数列表的末尾和函数体的开头之间声明。
答案 3 :(得分:0)
这只是K& R风格的功能定义,虽然标记为“过时”,但标准仍然允许。该代码中不合适的是第一个参数应该是char **v
(或char *v[]
)标准。