我想知道,如果可能的话,如何根据函数的返回值的类型转换如何对应于传递的参数之一来生成编译器警告。在我的示例中,如果函数调用的类型转换为小于“Bytes”参数定义的任何值,我想生成编译器警告。这在使用 MSP430 的 IAR 的 C 程序中使用
例如:
(INT16U)GetINTU(VarPtr, 2); // This is ok
(INT16U)GetINTU(VarPtr, 4); // generates warning
(INT32U)GetINTU(VarPtr, 4); // This is ok
(INT32U)GetINTU(VarPtr, 8); // generates warning
(INT64U)GetINTU(VarPtr, 4); // This is ok
这是上述功能:
INT64U GetINTU(INT8U* Address, INT8U Bytes)
{
INT64U Value = 0;
if(Bytes<=8)
{
do
{
Value += ((INT64U)(*Address++))<<(--Bytes<<3);
}while(Bytes);
}
return Value;
}
编辑:我也考虑过返回一个空指针,但这意味着我需要一个静态变量。我不想这样做