函数之间的一致性';C头中的s声明及其在.cpp文件中的定义 考虑一个C++函数,我想将它与C(例如, int()>代码>接口,它不带输入参数。
C语言中缺少输入参数可以表示为函数之间的一致性';C头中的s声明及其在.cpp文件中的定义 考虑一个C++函数,我想将它与C(例如, int()>代码>接口,它不带输入参数。,c++,c,void,C++,C,Void,C语言中缺少输入参数可以表示为intfoo(void),而C中的intfoo()表示任意数量的输入参数 但是,C++中的代码> int()/表示没有参数的函数,而 int fo(无效)被认为是C向后兼容残余,应该避免。 考虑到上述情况,什么是最合适的 选项1: C头声明:intfoo(void) C++文件定义:intfoo(void){…} 选项2: C头声明:intfoo() C++文件定义:intfoo(){…} 选项3: C头声明:intfoo(void) C++文件定义:intfoo(
intfoo(void)代码>,而C中的intfoo()
表示任意数量的输入参数
<>但是,C++中的代码> int()/<代码>表示没有参数的函数,而<代码> int fo(无效)被认为是C向后兼容残余,应该避免。
考虑到上述情况,什么是最合适的
选项1:
C头声明:intfoo(void)代码>
C++文件定义:intfoo(void){…}
选项2:
C头声明:intfoo()代码>
C++文件定义:intfoo(){…}
选项3:
C头声明:intfoo(void)代码>
C++文件定义:intfoo(){…}
< >我们已经知道C和C++之间的区别了。p>
由于在C语言中使用f()
是一种不好的做法(编译器无法将函数的声明与其定义进行比较,以确保正确调用函数),并且该函数具有C链接,因此我建议使用f(void)
毕竟,C++中的<强> >代码> f(空)> >只与C 有反向可燃性,这正是您的用例。
只是一个小的修正:不是任意数量的输入参数,而是<强>未指定< /强>,这意味着与变量函数有着严重的区别。
< P> OK,我们已经知道C和C++之间的区别了。p>
由于在C语言中使用f()
是一种不好的做法(编译器无法将函数的声明与其定义进行比较,以确保正确调用函数),并且该函数具有C链接,因此我建议使用f(void)
毕竟,C++中的<强> >代码> f(空)> >只与C 有反向可燃性,这正是您的用例。
只是一个小小的修正:这不是任意数量的输入参数,而是未指定的。这意味着变量函数存在严重的差异。我将使用:
// Header
#ifdef __cplusplus
extern "C" {
#endif
void foo(void);
#ifdef __cplusplus
}
#endif
对于cpp文件:
// in cpp file
extern "C" {
void foo(void)
{
// implementation
}
}
正如我们明确表明我们使用C一样。我将使用:
// Header
#ifdef __cplusplus
extern "C" {
#endif
void foo(void);
#ifdef __cplusplus
}
#endif
对于cpp文件:
// in cpp file
extern "C" {
void foo(void)
{
// implementation
}
}
正如我们明确显示的,我们使用C