我发现在C中可以运行(尽管有警告)的代码现在移到C++时给我一个错误。我想知道为什么会产生错误,以及如何解决。

我正在将其他人的代码转换为C++,这给了我错误(将其拉出并在其自己的文件中进行了测试)...

#include <stdio.h>

typedef enum SPI_SSADDR_TYPE
{
    SSADDR0 = 0,
    SSADDR1 = 1,
    SSADDR2,
    SSADDR3,
    SSADDR4,
    SSADDR5,
    SSADDR6,
    SSADDR7,
    SSADDR8
} SPI_SSADDR;

void SPI_set_slave_addr( SPI_SSADDR slaveSelectAddr );

int main()
{
    SPI_set_slave_addr(SSADDR8);
    return 0;
}

void SPI_set_slave_addr( SPI_SSADDR slaveSelectAddr )
{
    slaveSelectAddr = slaveSelectAddr & (SPI_SSADDR)(0x07); // This line
    printf("Test: %d\r\n", slaveSelectAddr);
    return;
}

它产生的错误是:
TypeDef.cpp: In function ‘void SPI_set_slave_addr(SPI_SSADDR)’:
TypeDef.cpp:26: error: invalid conversion from ‘int’ to ‘SPI_SSADDR’

最佳答案

尝试这个:

slaveSelectAddr = (SPI_SSADDR)((int)slaveSelectAddr & 0x07);

关于c++ - C与C++ : How to fix? Typedef Enum,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16591687/

10-11 18:58