如何将C中声明的可选参数方法转换为c ++

时间:2017-02-02 09:56:35

标签: c++ c optional-parameters

我将一些旧的C代码转换为c ++并遇到一些奇怪的东西,在.h文件中声明的C代码说: void Message(char *s, ...); 和实施负责人在.c

void Message(char *s, long x1, long x2, long x3, long x4, long x5, long x6, long x7, long x8, long x9, long x10){...}

当我做出直接的'复制到c ++中的类声明和实现我得到"原型错误"。

我是否需要在.c文件中进行完整的声明,或者有另一种方式来进行c ++和类的使用? x1 ... x10是选项参数,很少使用。

使用g ++和NetBeans 7.3在linux中工作

1 个答案:

答案 0 :(得分:2)

C代码不应该编译。要在C ++中实现可选参数,请将它们的值放在声明中:

void Message(char *s, long x1 = 0L, long x2 = 0L, long x3 = 0L, long x4 = 0L, long x5 = 0L,
        long x6 = 0L, long x7 = 0L, long x8 = 0L, long x9 = 0L, long x10 = 0L);

然后像这样定义你的函数:

void Message(char *s, long x1, long x2, long x3, long x4, long x5,
        long x6, long x7, long x8, long x9, long x10)
{
    // Function body
}

请注意,您只需在一个位置指定默认值。在声明中进行,以便客户可以看到它们。