考虑一个 C++ 函数,我想在 C 中连接它(例如,int foo()
),它不接受任何输入参数。
C中输入参数的缺失可以表示为int foo(void);
,而C中的int foo()
表示输入参数任意个数。
但是,在 C++ 中,int foo()
表示一个不带参数的函数,int foo(void)
被认为是 C 向后兼容的残余,应该避免。
考虑到以上情况,什么是最合适的?
Option 1:
C header declaration :
int foo(void);
C++ file definition :
int foo(void) { ... }
选项 2:
C header declaration :
int foo();
C++ file definition :
int foo() { ... }
选项 3:
C header declaration :
int foo(void);
C++ file definition :
int foo() { ... }
最佳答案
好的,我们已经知道f()
and f(void)
之间的区别了。在 C 和 C++ 中。
因为使用 f()
在 C 中是不好的做法(你失去了编译器将函数的声明与其定义进行比较的能力,以确保它被正确调用)并且你有 C 链接这个函数,我建议使用 f(void)
毕竟,在 c++ 中,f(void)
只是为了与 C 具有向后兼容性而保持活力,这正是您的用例。
只是一个小的更正:它不是任意数量的输入参数,而是未指定,这意味着这与可变参数函数有很大的不同。
关于c++ - C 头文件中的函数声明与其在 .cpp 文件中的定义之间的一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25039510/