c++ - 将任何参数传递给 extern "C" 访问的函数
问题描述
我在我的 C++ 项目中使用 x64asm 代码。我正在使用此代码访问我在 .asm 文件中定义的函数:
extern "C" void strpl(char* , int*, bool )
我想要的是在第一个参数处有任何类型的 pf 指针,而不仅仅是char *
我尝试了这样的自定义模板:
template<typename T>
extern "C" void strpl(T const* , int*, bool )
但它说自定义类型与extern "C"不兼容
我应该怎么做才能让它传递任何类型的指针作为第一个参数
解决方案
我相信原始的 void 指针 ( void*
) 就足够了。
在调用 C/C++ 代码中,您可以使用 C 样式转换在 void 指针和其他原始类型的指针之间进行转换。
一些建议... 模板的使用对于您要完成的工作来说太过分了,并且需要大量的理解才能使模板正确。有些解决方案不需要模板,所以在必要之前避免使用它们。