这句代码怎么又名字有两个的??是什么意思呢??大神帮忙解释一下
上面的几位已经说的比较清楚了,就是函数定义代码有一种旧式写法:
// 旧式写法
int main(argc, argv)
int argc;
char *argv[];
{
return 0;
}
// 新式写法
int main(int argc, char *argv[])
{
return 0;
}
如果有这样的一个宏定义判断,就能实现根据宏自动适配老的参数列表:
#if _COMPATIBLE
#define P1(type1, name1) \
(type1 name1)
#define P2(type1, name1, type2, name2) \
(type1 name1, type2 name2)
#else
#define P1(type1, name1) \
(name1) \
type name1;
#define P2(type1, name1, type2, name2) \
(name1, name2) \
type1 name1; \
type2 name2;
#endif
int main P2(int, argc, char **, argv)
{
return 0;
}
不过,只适用于参数较少的情况下。其中的_COMPATIBLE
是我随意写的,仅做示例。
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
我之前回复过一个类似的,在这里你看看:
求解C语言main函数
简单来说P2是一种宏,这种宏是为了兼容老版本的编译器,具体可以看我回答的这个帖子。