强制宏为无符号类型

时间:2017-10-20 10:07:20

标签: c macros

我想强制一个宏为无符号类型我知道这是一个简单的操作,例如。

#define TEST_VALUE_1 100U

但是,我定义的宏的值是外部驱动程序支持包中的一个无法修改的定义。他们是一种可以迫使它成为无符号类型的方式

#define TEST_VALUE_1 BSP_DEFINE_1

1 个答案:

答案 0 :(得分:1)

为此,您必须在粘贴前强行扩展,例如像这样:

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<span class="fa-stack fa-lg">
    <i class="fa fa-circle fa-2x fa-inverse"></i>
    <i class="fa fa-envelope fa-stack-1x"></i>
  </span>

如果您无法确定该号码是否已经加后缀,您应该使用强制转换来保证安全。如果你想要,也可以在宏中应用强制转换:

#define VAL 35

#define _PASTE(x,y) x##y
#define PASTE(x,y) _PASTE(x,y)

#define UVAL PASTE(VAL,U)

// expanding UVAL gives 35U