从“ const void *”到“ PVOID {aka void *}”的无效转换[-fpermissive]

时间:2018-09-21 16:21:16

标签: c++

我正在尝试编译以下代码,并且不断收到此错误:

  

从“ 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,这可能是问题吗? :/

1 个答案:

答案 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, ...);