C 强制宏为无符号类型
我想强制宏为无符号类型,我知道这是一个直接的操作,例如C 强制宏为无符号类型,c,macros,C,Macros,我想强制宏为无符号类型,我知道这是一个直接的操作,例如 #定义测试值_1 100U 但是,我定义的宏的值是外部驱动程序支持包中的定义,无法修改。这是我可以强制它为无符号类型的方法吗 \define TEST\u VALUE\u BSP\u define\u 1要执行此操作,必须在粘贴前强制展开,例如: #define VAL 35 #define _PASTE(x,y) x##y #define PASTE(x,y) _PASTE(x,y) #define UVAL PASTE(VAL,U)
#定义测试值_1 100U
但是,我定义的宏的值是外部驱动程序支持包中的定义,无法修改。这是我可以强制它为无符号类型的方法吗
\define TEST\u VALUE\u BSP\u define\u 1要执行此操作,必须在粘贴前强制展开,例如:
#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
如果无法确定数字是否已加后缀,则应使用强制转换以确保安全。如果需要,也可以在宏中应用强制转换:
#define UVAL ((unsigned)(VAL))
可能是刚投下的副本<代码>((无符号)BSP_DEFINE_1)
\DEFINE TEST_VALUE_1 BSP_DEFINE_1##U
?@FelixPalmen我已经试过了,但只是追加了。编译器抱怨错误:“BSP\u DEFINE\u 1U”未声明(首次用于此函数)
但是,为什么需要它?请注意,宏没有类型,它们只是按文本进行扩展。-啊,好吧,看来你需要一些双重扩展。仍然:为什么?小贴士:当原始数字文字上已经有u
后缀时,这不起作用。(演员阵容在这种情况下很有效。)@MOehm可能是个问题,我要补充一点。