函数之间的一致性';C头中的s声明及其在.cpp文件中的定义 考虑一个C++函数,我想将它与C(例如, int()>代码>接口,它不带输入参数。

函数之间的一致性';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(

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(){…}


< >我们已经知道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