多个实例重载函数具有C链接

时间:2013-08-22 12:16:44

标签: c++ cuda

在关于C ++集成的CUDA示例中的示例代码之后,我正在编写在.cu文件中调用CUDA代码的包装函数。

在该文件中,我有一个初始化CUDA上下文并分配全局内存并将一些数据放入常量内存的函数。

extern "C" void initEngine(int *d_data, int *d_coefA, int *d_coefB)
{
   //Allocations
   //Copy to constant memory
}

现在我要做的是重载initEngine函数以接收更多参数,但我认为没有办法重载该函数,因为它具有 C链接我是对吗? / p>

extern "C" void initEngine(int *d_data, int *d_coefA, int *d_coefB, int *d_coefC, 
                           int *d_random)
{
   //Allocations
   //Copy to constant memory
}

你能给我一些建议,只有一个initEngine功能吗?或者是不可能的,我必须有2个函数,或者可能只有一个带有所有参数的函数,只是传递NULL引用或类似的东西。

1 个答案:

答案 0 :(得分:2)

是的,重载是一种C ++功能。

如果您想要从其他模块调用重载函数,请始终使用C ++(即不要使用extern "C",并将所有文件保存为.cpp或.cu)。

如果您不希望这样做,可以尝试使用macros or some other magic