可能であれば、関数の戻り値の型キャストが渡されたパラメーターの1つにどのように対応するかに基づいて、コンパイラー警告を生成する方法を知りたいです。私の例では、関数呼び出しが「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;
}
編集:nullポインターを返すことも検討しましたが、それは静的変数が必要であることを意味します。やりたくない