gpt4 book ai didi

c++ - 如何将此代码从 C 转换为 C++?

转载 作者:行者123 更新时间:2023-11-30 19:02:20 25 4
gpt4 key购买 nike

我正在使用 mbed 开发一个嵌入式项目。该芯片的制造商指定使用此查找生成器进行循环冗余测试,但它是用 C 编写的。查找生成器代码

    ///////////////////////configures CRC check lookup table////////////////////////
short pec15Table[256];
short CRC15_POLY = 0x4599; //CRC code

void configCRC(void)
{
for (int i = 0; i < 256; i++)
{
remainder = i << 7;
for (int bit = 8; bit > 0; --bit)
{
if (remainder & 0x4000)
{
remainder = ((remainder << 1));
remainder = (remainder ^ CRC15_POLY)
}
else
{
remainder = ((remainder << 1));
}
}
}
pec15Table[i] = remainder&0xFFFF;
};

我还不太擅长 C++,所以我只是复制并粘贴它并检查是否有明显的语法错误。例如,我将 int16 声明替换为短整型和无符号短整型。但是,当我编译时,它给出了以下错误。这对我来说没有意义。我确信我做错了什么。

Error: Cannot determine which instance of overloaded function "remainder"  is intended in "config.cpp", Line: 20, Col: 10

最佳答案

显然,您与 std::remainder 发生了命名空间冲突。这是避免全局变量的众多原因之一。否则,C 和 C++ 在这里应该是相同的。

值得注意的是,这段代码写得非常幼稚。不仅必须重写函数以正确获取参数,而且类型的使用也无处不在。

您永远不应该对有符号类型进行按位算术,因为这会导致许多定义不明确的行为错误。所有“草率打字”类型(例如 shortint)都必须替换为 stdint.h 中的类型。您应该只使用无符号类型。您需要了解隐式整数提升。

关于c++ - 如何将此代码从 C 转换为 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56102813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com