【问题标题】:C18 compiler typedef enum data sizeC18 编译器 typedef 枚举数据大小
【发布时间】:2009-08-05 12:54:59
【问题描述】:

我正在尝试移植代码以使用 Microchip 的 C18 编译器为 PIC 微控制器进行编译。该代码包括分配了大值(> 8 位)的枚举。不能正常工作,说明比如0x02和0x2002是一样的。

如何强制将枚举值引用为 16 位值?

【问题讨论】:

    标签: enums size microchip


    【解决方案1】:

    在 DirectX 标头中,每个枚举都有一个 FORCE_DWORD 值,其值为 0xffffffff。我想这基本上就是您想要的,它强制编译器让枚举具有 至少 32 位。所以尝试添加一个值为0xffffFORCE_WORD

    当然,如果该编译器不支持大于 8 位的枚举,这不会解决您的问题。

    【讨论】:

      【解决方案2】:

      我发现了问题。

      为了将来的参考,C18 编译器在执行数学运算时不会提升变量或常量,即使它是 ANSI C 标准。这是为了提高在 8 位处理器上运行时的速度。

      要强制符合 ANSI,请使用“-Oi”编译器选项。

      See page 92 of the C18 manual.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-15
        • 2015-01-27
        • 1970-01-01
        • 1970-01-01
        • 2019-07-21
        • 2016-09-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多