0

他の言語で呼び出され、おそらく複数のプラットフォームにコンパイルされるCライブラリを作成する場合、ブール値を表すのに最も適切なタイプはどれですか。

現在のプロジェクトではC99を使用できませんが、可能であれば、C99のブール値は適切でしょうか?

編集: 私はunsignedcharまたはunsignedintに傾いています。符号付きまたは符号なしを明示的に指定する理由はありますか、あいまいさや落とし穴を回避するのに役立ちますか、それとも単にintを使用する必要がありますか?

しかし、私が使用しているサードパーティのライブラリのいくつかと、C、C ++、Obj Cに関する他のスレッドを見ると、ほとんどのライブラリと言語の設計者は、boolに使用するのに最適なタイプについて独自の考えを持っているようです。

このコードは1つのプラットフォームに対して1つのコンパイラでのみコンパイルされるため、これは実際には問題ではありませんが、後で移植される可能性があります。

移植性を最大化するためのブール型の最良の選択はどれですか?

4

1 に答える 1

2

他の言語で呼び出され、おそらく複数のプラットフォームにコンパイルされるCライブラリを作成する場合、ブール値を表すのに最も適切なタイプはどれですか。

int通常、これは計算の観点から最も効率的であるため、通常、人々はそれをtypedefするだけであることがわかります(int通常、プラットフォームのネイティブタイプです)。しかし実際には、どの整数型でも機能します。特にメモリ使用量が気になる場合は、を使用してcharください。

現在のプロジェクトではC99を使用できませんが、可能であれば、C99のブール値は適切でしょうか?

はい!

値unsignedzeroはおそらくほとんどのコンテキストで同じ表現を持っているので、私はunsignedcharまたはunsignedintに傾いていますか?

これに答える方法がわかりません。なぜあなたは基底表現について心配しているのですか?

于 2013-01-08T14:16:08.503 に答える