我将一些旧的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中工作
答案 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
}
请注意,您只需在一个位置指定默认值。在声明中进行,以便客户可以看到它们。