gccバージョン4.6.3を使用するプロジェクトがあり、「-Wall-Werror-Wconversion」でコンパイルする必要があります。次の簡単な例は、私が取り除くことができないエラーを示しています。
#include <stdint.h>
int main(void) {
uint32_t u = 0;
char c = 1;
u += c;
return (int)u;
}
上記のフラグを使用してコンパイルすると、次のようになります。
test.c:7:8: error: conversion to ‘uint32_t’ from ‘char’ may change the sign of the result [-Werror=sign-conversion]
いいよ。型キャストを追加するだけですよね?いいえ。7行目をに変更u += (uint32_t)c
しても、エラーは解消されません。に変更しても消えることu = u + (uint32_t)c
はありません。
これを修正することは可能ですか?
「char」は文字列に由来するため、タイプを変更するオプションがないことに注意してください。