如何将 C 中声明的可选参数方法转换为 C++
How can I convert optional parameter method declared in C into c++
我正在将一些旧的 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){...}
当我将 'straight' 复制到 class 声明中并在 c++ 中实现时,我得到 "prototype error".
我是否需要像在 .c 文件中那样做一个完整的声明,或者是否有另一种 C++ 和 class 用法的方法?
x1 ... x10 是选项参数,很少使用。
在 linux 中使用 g++ 和 NetBeans 7.3
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
}
请注意,您只需在一处指定默认值。在声明中执行此操作,以便客户可以看到它们。
我正在将一些旧的 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){...}
当我将 'straight' 复制到 class 声明中并在 c++ 中实现时,我得到 "prototype error".
我是否需要像在 .c 文件中那样做一个完整的声明,或者是否有另一种 C++ 和 class 用法的方法? x1 ... x10 是选项参数,很少使用。
在 linux 中使用 g++ 和 NetBeans 7.3
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
}
请注意,您只需在一处指定默认值。在声明中执行此操作,以便客户可以看到它们。