【发布时间】:2012-10-01 15:28:35
【问题描述】:
如果可能的话,我想知道如何根据函数返回值的类型转换与传递的参数之一的对应关系来生成编译器警告。在我的示例中,如果函数调用的类型转换为小于“Bytes”参数定义的任何值,我想生成编译器警告。这用于将 IAR 用于 MSP430 的 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;
}
编辑:我也考虑过返回一个空指针,但这意味着我需要一个静态变量。我不想这样做
【问题讨论】:
标签: c casting compiler-warnings msp430