2011-08-19 34 views
1

我有一个导出的函数在一个dll(用vC++编写),它有变量no。的论据。现在我想在没有变量no的情况下重载这个函数。的论据。这个概念有什么问题吗?我担心的原因是因为我读过vC++对c和C++使用__cdecl调用约定。可以使用变量no的函数。的参数在VC++中被重载?

样本签名如下。

void f(int i, char *fmt, ...); 
void f(int i, string str); 
+1

如果你的DLL只使用C接口,那么你不能重载函数。如果你创建一个C++库,你可能会限制自己只能使用相同的编译器。 –

+0

为了获得更多乐趣,您可以在单个DLL中混合使用C和C++函数。然后,您可以使用任何编译器的C函数,以及原始编译器的C++重载,但在编写头文件时要小心。 – MSalters

回答

0

这取决于你打算从哪里调用这些函数。 它们应该被转换为名称,如f__FiPc??f__Fi6string

如果您还没有声明extern "c",C++编译器会解码它们,并且C编译器将错过f函数。然而这取决于你的编译器的实现。

相关问题