前提
C言語で開発しています。
実現したいこと
MISRA-Cの指摘を改善したいです。
発生している問題・エラーメッセージ
指摘内容は以下です。
#define FALSE (0U)
unsigned int hogedata;
if(hogedata == FALSE)
キャストが必要なのですが
(1) if(hogedata == (unsigned int)FALSE)
(2) if((bool)hogedata == FALSE)
のどちらが正しいでしょうか?
実際試してみてはいかがでしょうか?
MISRA-Cの指摘は具体的にどんな文面ですか?
本当に質問文にある FALSE が使われていますか?
boolean の定義はどうなっていますか?
int32_tさん
MISRA-Cの指摘ですが
左側のオペランドの必須型が右側のオペランドと同じではありません
との指摘です
SaitoAtsushiさん
すみません、記述に間違いがありました。
booleanは定義していないので、(2)の記述は
if((bool)hogedata == FALSE)
になります
FALSE を 別の名前に変更しても指摘されますか?
MISRA-C の指摘というのは MISRA-C:2012 に準拠したなんらかのツールによる指摘という意味ですか?
int32_tさん
試してませんので即答できませんが、試してみます
SaitoAtsushiさん
はい、Coverityという静的ツールによる指摘です。
質問は編集出来ますので、間違いや追加情報がありましたら質問本体を修正・追加してください。
Coverityは使ったことないけれど(あの手のツールってクソ高くて...)
一応念のため、
> キャストが必要
という「あなたの解釈」ではなく、指摘メッセージを訳さず略さず"そのまま"示しておいてください。
正直なところ、しれっと「記述に間違いがありました」とおっしゃる方には「他は絶対に元と違っていないのですね?」と聞かざるを得ませんが、大丈夫ですね?
thkanaさん
すみませんでした、ご指摘、ごもっともです。
私の解釈は不要でしたね。
Coverityの指摘を全て記述すると以下です。
「左側のオペランド”hogedata"(unsigned)の必須型が右側のオペランド"0U"(boolean)と同じではありません」

回答2件
あなたの回答
tips
プレビュー