我是初学者。我正在使用VS2008。在file1.cpp
我正在调用file2.c
中的OALPAtoVA函数。我得到了C2440
。我认为这是由于C& C之间引起的一些混乱。编译期间的C ++文件。
file1.cpp
extern OMAP_MMCHS_REGS *m_pbRegisters;
m_pbRegisters = OALPAtoUA(AM33X_MMCHS1_REGS_PA); //error at this line
file_2.c
VOID* OALPAtoVA(UINT32 pa, BOOL cached)
{
//some code
return va;
}
我得到的错误是,
error C2440: '=' : cannot convert from 'void *' to 'OMAP_MMCHS_REGS *'
如何解决此错误?
答案 0 :(得分:2)
假设OALPAtoUA
和OALPAtoVA
之间的差异只是你问题中的拼写错误。
问题在于,与C不同,C ++不提供从void*
到不同指针类型的隐式转换。因此,如果您的函数返回void*
,则必须明确地转换它:
m_pbRegisters = static_cast<OMAP_MMCHS_REGS*>(OALPAtoVA(AM33X_MMCHS1_REGS_PA));