【问题标题】:check from preprocessor if -mint8 is used for compilation从预处理器检查 -mint8 是否用于编译
【发布时间】:2015-11-11 18:28:20
【问题描述】:

如果编译器选项-mint8正在使用,是否有任何预定义的c宏?

背景:

我可以使用 -mint8 编译器选项为 avr 编译一些东西,这会导致更小的代码大小。这违反了 c 标准,但这不是这里的问题。

我只是想

#ifdef MINT8  // search the name for the macro here
  ...
#endif

【问题讨论】:

  • 不使用int_least8_tint_fast8_t 是否有原因?
  • 有时您无法控制“内部”使用哪种类型。例如。位字段将在内部生成为 int。位域的访问将导致在 2 字节访问中没有 -mint8,这有时会产生很大的开销。

标签: c-preprocessor avr avr-gcc


【解决方案1】:

AVR Libc 测试__INT_MAX__ 的值:

#if __INT_MAX__ == 127
 ...
#endif

如果您包含 <stdint.h>,那么它将根据需要将 __USING_MINT8 定义为 0 或 1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    相关资源
    最近更新 更多