多个实例重载函数具有C链接
More than one instance overloaded function has C linkage
根据CUDA示例中关于C++集成的示例代码,我正在.cu
文件中编写调用CUDA代码的包装函数。
在那个文件中,我有一个函数,它初始化CUDA上下文,分配全局内存,并将一些数据放入常量内存中。
extern "C" void initEngine(int *d_data, int *d_coefA, int *d_coefB)
{
//Allocations
//Copy to constant memory
}
现在我想做的是重载initEngine
函数以接收更多的参数,但我认为没有办法重载该函数,因为它有C链接,对吗?
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
函数吗?或者是不可能的,我必须有两个函数,或者可能只有一个函数和所有参数,只传递NULL引用或类似的东西。
是的,重载是C++的一个特性。
如果您希望具有可从其他模块调用的重载函数,请始终使用C++(即,不要使用extern "C"
,并将所有文件保留为.cpp或.cu)。
如果你不想这么做,你可以尝试使用宏或其他魔法。
相关文章:
- 内联函数中具有内部链接的全局变量
- 使用C链接在函数内部创建C++模板
- 返回一个带有 std::move 的对象并链接函数
- 无法使函数公开。获取:"LNK2005"错误。如何调试链接器错误
- 链接器错误:无法解析构造函数
- C++线程找不到函数作为参数(链接器)
- 使用动态链接加载程序 <dlfcn.h> 而不是直接函数调用的目的是什么?
- 构造函数的链接时间自动注册
- Doxygen:不为非成员函数生成超链接
- 静态库中的 g++ 错误链接函数
- 编写链接函数的更短/更有效的方法,该函数按字典顺序添加新元素
- 仅当链接函数 C++ 时,才会发生"Expression must have class type error"
- 反向动态链接函数调用
- OpenGL GLX_EXT_swap_control存在,但无法链接函数
- C++哈希链接函数
- c++中对链接函数的未定义引用
- 在运行时用LD_PRELOAD链接函数
- C++标准是否规定C链接函数为“noexcept”
- 可以用不同的名称链接函数
- 共享库没有链接函数