C语言的语法问题,求大神帮忙?

clipboard.png

clipboard.png
这句代码怎么又名字有两个的??是什么意思呢??大神帮忙解释一下

阅读 3.6k
4 个回答

我之前回复过一个类似的,在这里你看看:
求解C语言main函数

简单来说P2是一种宏,这种宏是为了兼容老版本的编译器,具体可以看我回答的这个帖子。

int_string_copy应该是被重载的函数名。P1P2怕是宏吧。比如:

#define P1(type, var) (type var)

上面的几位已经说的比较清楚了,就是函数定义代码有一种旧式写法:

// 旧式写法
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是我随意写的,仅做示例。

这难道不是函数重载吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题