0

私は、署名付き/署名なしの文字に関する多くの質問を経験しました。C++ には 3 つの異なる char 型があることを理解しています。現在、Visual Studio でコンパイルされた大きなコード ベースがあります。「デフォルトの char unsigned」設定は「いいえ」に設定されています。ここで、特定のプロジェクトをコード ベースに追加することになっています (現在のツール セットの一部になるように統合します)。このプロジェクトには、デフォルトの char を unsigned にする必要があることが強く強調されているドキュメントが付属しています。

今、私は疑問に思い始めました: 作者は、char を unsigned にする必要があるのに、なぜ「unsigned char」ではなく「char」を使用したのでしょうか? コードベースを変更して「デフォルトの署名なし文字」設定を「はい」に設定すると、何が問題になる可能性がありますか? そして、コードベースに追加することになっているプロジェクト全体で、すべての「char」を unsigned char に変更すると、何が問題になる可能性がありますか?

実際、私がおそらく尋ねるべきことは、「何も壊さずにこのプロジェクトをコードベースに追加するにはどうすればよいですか」ということでしたが、それは解決策を求めていることになり、何も学びません;)

4

1 に答える 1

3

うーん、なんてこった。回避できるように、このコードがどこから来たのか教えていただけますか? :)

私の最初の本能は、既存のプロジェクトがリンクする別のライブラリとしてコードをビルドし、それとやり取りするときは注意することです。問題のコードの正確な性質がわからないので、それが実現可能かどうかわかりません。

持ち込んでいるコードが実際charに署名されていないと想定している場合は、それを明示的に変更するだけで問題ないはずunsigned charですが、後で新しいバージョンのコードをマージする必要があるかどうかという問題が生じるため、私はまだライブラリソリューションを好むでしょう。

于 2010-08-23T07:19:17.573 に答える