是否可以使用编译指示覆盖 C 中的枚举基类型?
Is it possible to override enum base type in C using pragmas?
是否可以使用 pragma 覆盖 C 中的枚举基类型?我所知道的是,我们可以设置编译器指令,将枚举基类型设置为 char、int、long。但是有没有其他方法可以在 C 语言的代码中设置枚举基类型?对于 C++,我发现了 typedef enum 之类的编译指示:可以使用 unsigned char ..但是 C 的情况如何?
C 语言标准没有定义各种#pragma 扩展的作用。因此,在符合 C.
的情况下无法做到这一点
如果您有特定的编译器需要执行此操作,一些专门的嵌入式系统目标编译器确实提供了此类功能。您最好阅读该编译器的文档以获得这方面的指导。
但是我根本不建议在嵌入式代码中实例化一个枚举,正如您所注意到的那样,这对底层类型几乎没有控制,因此对于您可能想要针对某些特定平台的嵌入式代码来说是不可预测的。
相反,一定要定义枚举类型,而不是实例化它们,只需创建您选择的整数类型的变量,然后将它们赋值并与枚举值文字进行比较。
是否可以使用 pragma 覆盖 C 中的枚举基类型?我所知道的是,我们可以设置编译器指令,将枚举基类型设置为 char、int、long。但是有没有其他方法可以在 C 语言的代码中设置枚举基类型?对于 C++,我发现了 typedef enum 之类的编译指示:可以使用 unsigned char ..但是 C 的情况如何?
C 语言标准没有定义各种#pragma 扩展的作用。因此,在符合 C.
的情况下无法做到这一点如果您有特定的编译器需要执行此操作,一些专门的嵌入式系统目标编译器确实提供了此类功能。您最好阅读该编译器的文档以获得这方面的指导。
但是我根本不建议在嵌入式代码中实例化一个枚举,正如您所注意到的那样,这对底层类型几乎没有控制,因此对于您可能想要针对某些特定平台的嵌入式代码来说是不可预测的。
相反,一定要定义枚举类型,而不是实例化它们,只需创建您选择的整数类型的变量,然后将它们赋值并与枚举值文字进行比较。