【问题标题】:manage enum var in c (porting code from c++)在 c 中管理 enum var(从 c++ 移植代码)
【发布时间】:2015-11-23 11:09:50
【问题描述】:

我正在尝试将 c++ 代码移植到 msp430 c 代码。 由于我从未遇到过枚举类型,因此我很少遇到不了解如何管理它的问题。 此代码由 Taylor Andrews 编写: 枚举列表定义为:

    enum accel_odr
{
    A_POWER_DOWN,   // Power-down mode (0x0)
    A_ODR_3125,     // 3.125 Hz (0x1)
    A_ODR_625,      // 6.25 Hz (0x2)
    A_ODR_125,      // 12.5 Hz (0x3)
    A_ODR_25,       // 25 Hz (0x4)
    A_ODR_50,       // 50 Hz (0x5)
    A_ODR_100,      // 100 Hz (0x6)
    A_ODR_200,      // 200 Hz (0x7)
    A_ODR_400,      // 400 Hz (0x8)
    A_ODR_800,      // 800 Hz (9)
    A_ODR_1600      // 1600 Hz (0xA)
};

而我的是:

 typedef enum
{
    A_POWER_DOWN,   // Power-down mode (0x0)
    A_ODR_3125,     // 3.125 Hz (0x1)
    A_ODR_625,      // 6.25 Hz (0x2)
    A_ODR_125,      // 12.5 Hz (0x3)
    A_ODR_25,       // 25 Hz (0x4)
    A_ODR_50,       // 50 Hz (0x5)
    A_ODR_100,      // 100 Hz (0x6)
    A_ODR_200,      // 200 Hz (0x7)
    A_ODR_400,      // 400 Hz (0x8)
    A_ODR_800,      // 800 Hz (9)
    A_ODR_1600      // 1600 Hz (0xA)
}accel_odr;

他在头文件中定义了一个与枚举相关的var:

uint16_t begin( accel_odr aODR = A_ODR_50); 执行此操作,编译时出现错误:

描述资源路径位置类型

18 应为 ")" LSM9DS0.c /ACC 第 130 行 C/C++ 问题

描述资源路径位置类型

256 type name is not allowed main.c /ACC line 45 C/C++问题

我错过了什么??我尝试将函数内部的值分配为:

uint16_t begin( accel_odr aODR);

aODR = A_ODR_50;

但我没有解决问题。

【问题讨论】:

  • 不确定这与c# 有什么关系。删除了那个标签。

标签: c++ c enums


【解决方案1】:
uint16_t begin( accel_odr aODR = A_ODR_50);

这不是变量声明,而是带有default argument value 的函数声明。 C++ 有默认参数,但 C 没有默认参数功能。

您可以在 C 中将其声明为:

    uint16_t begin(accel_odr aODR);

如果有任何没有参数的调用,例如begin();,请将它们替换为begin(A_ODR_50);

【讨论】:

    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2010-11-10
    • 2023-03-09
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多