C++ cli 在C++/CLI中存在内存集问题

C++ cli 在C++/CLI中存在内存集问题,c++-cli,C++ Cli,我是一个新手,目前正在使用c++/cli包装我在.lib文件中使用的几个类。我非常需要在我的c++/cli中使用memset。这里有人知道如何在c++/cli代码中使用memset吗 我在C++中使用的C++代码:< /p> memset(&DeviceInfo, 0, sizeof(FS_DEVICE_INFO)); 这是我的C++/CLI代码,当我尝试从C++代码中使用相同的MyStEt线时,我得到了错误: bool newIFSWDevice::GetDeviceInfo(PFS

我是一个新手,目前正在使用c++/cli包装我在.lib文件中使用的几个类。我非常需要在我的c++/cli中使用memset。这里有人知道如何在c++/cli代码中使用memset吗

<>我在C++中使用的C++代码:< /p>
memset(&DeviceInfo, 0, sizeof(FS_DEVICE_INFO));

这是我的C++/CLI代码,当我尝试从C++代码中使用相同的MyStEt线时,我得到了错误:

bool newIFSWDevice::GetDeviceInfo(PFS_DEVICE_INFO pDevInfo)
{
IFSDevice* pDeviceWheel = nullptr;
FS_DEVICE_INFO DeviceInfo;
int x = 0;

while (nullptr != (pDeviceWheel = newFSDeviceEnumerator::EnumerateInstance(x++)))
{
    memset(&DeviceInfo, 0, sizeof(FS_DEVICE_INFO)); //error line
    pDeviceWheel->GetDeviceInfo(&DeviceInfo);
    if (0 == wcscmp(DeviceInfo.Name, FS_DEVICE_WHEEL_PORSCHE_NAME)
        break; 
我尝试使用for循环来代替

for (int i = 0; i <= sizeof(FS_DEVICE_INFO); i++)
    FS_DEVICE_INFO[i] = 0;

但它仍然给了我一个错误表达式,它必须有一个常量值。非常感谢您的帮助!:

如注释中所述,您缺少头文件include。看

还值得注意的是,执行清除的for循环有几个问题:

for (int i = 0; i <= sizeof(FS_DEVICE_INFO); i++)
    FS_DEVICE_INFO[i] = 0;
sizeofFS\u DEVICE\u INFO以字节为单位提供该结构的大小,但FS\u DEVICE\u INFO[i]索引到结构数组中:[1]将是数组中的第二个结构,而不是第二个字节!您需要将指针强制转换为char或类似的内容。
当我尝试在我的c++/cli项目中使用相同的代码时,我会很高兴。它给出一个错误,表示标识符memset未定义。什么是FS\U设备\U信息?它是普通C++结构还是.NET类?另外,您收到了哪条错误消息?是表达式必须像您在问题中所说的那样具有常量值,还是标识符memset像您在注释中所说的那样未定义?仅供参考,DeviceInfo.Name=FS\u DEVICE\u WHEEL\u PORSCHE\u Name几乎肯定应该使用==而不是赋值。如果您没有将头文件包含在memset中,您需要在memset中包含头文件。只需对msdnmemset进行非常简单的搜索即可。当您收到错误消息时,这真的应该是您的第一步。