C语言中的混淆代码

时间:2012-01-27 13:34:31

标签: c

请解释C中的以下代码片段是如何有效的

int main(c, v) char *v; int c;{
 //program body
}

我偶然发现了国际混淆C代码竞赛中的一些例子,我只是好奇。

4 个答案:

答案 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[])标准。