我正在尝试编译以下代码,并且不断收到此错误:
从“ const void *”到“ PVOID {aka void *}”的无效转换[-fpermissive]
我基本上希望使用带有FT201x USB至I2C接口的UMFT201-xb分支板对外部EEPROM进行简单的读写。
我从D2XX EEPROM Programming examples下载了示例代码,而我正在尝试编译的特定文件却使我遇到上述错误,位于AN_428_D2XX_EEPROM_Programming_Examples/FT-X/FT-X EEPROM Modify/FT-X EEPROM Modify.cpp
。
仅供参考,我正在Linux上工作。
这是它抱怨的特定代码:
enter co/Open the port
//********************************************************
for (i = 0; i < numDevs; i++)
{
if ((Dev_Found == FALSE) && (devInfo[i].Type == FT_DEVICE_X_SERIES))
{
Dev_Found = TRUE;
status = FT_OpenEx("Chipi-X", FT_OPEN_BY_DESCRIPTION, &fthandle);
if (status != FT_OK)
{
printf("Open status not ok %d\n", status);
printf("Trying to open default EEPROM device...\n");
status = FT_OpenEx("FT231X USB UART", FT_OPEN_BY_DESCRIPTION, &fthandle);
if (status != FT_OK)
{
printf("Open status not ok %d\n", status);
printf("\n");
return 0;
}
else
{
printf("Open status OK %d\n", status);
printf("\n");
}
printf("\n");
}
else
{
printf("Open status OK %d\n", status);
printf("\n");
}
问题出现在以下行:
status = FT_OpenEx("Chipi-X", FT_OPEN_BY_DESCRIPTION, &fthandle);
编辑:谢谢大家的答复。但是在消除常量性时,出现了以下错误:打开状态不正常,没有其他可使用的内容。相同代码早期的“ numDevs”是使用“ DWORD”定义的。因为我正在使用LInux,这可能是问题吗? :/
答案 0 :(得分:0)
void*
中唯一的FT_OpenEx()
参数是第一个参数:
FT_STATUS FT_OpenEx (PVOID pvArg1, DWORD dwFlags, FT_HANDLE *ftHandle)
您传入的是字符串文字,在C ++中是const char[]
,它会衰减为const char*
。您不能将const指针传递给非const指针,因此会出错。
FT_OpenEx()
不会修改第一个参数的内容,因此您可以放心地删除常量:
status = FT_OpenEx(const_cast<char*>("Chipi-X"), ...);
否则,您可以先将字符串数据复制到非常量缓冲区,然后再传递给它:
char name[] = "Chipi-X";
status = FT_OpenEx(name, ...);