Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 强制宏为无符号类型_C_Macros - Fatal编程技术网

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可能是个问题,我要补充一点。