VS.NETとGCCのコード警告を無料にし、64ビットのコードを用意したいと思っています。
今日、私はメモリバッファを処理し、ファイルスタイルのインターフェイスを介してデータへのアクセスを提供する小さなモジュールを作成しました(たとえば、バイトの読み取り、バイトの書き込み、シークアラウンドなど)。
現在の読み取り位置とサイズのデータ型として、size_tを使用しました。これが最も自然な選択であると思われるためです。警告を回避し、64ビットでも動作するはずです。
念のため:私の構造は次のようになります:
typedef struct
{
unsigned char * m_Data;
size_t m_CurrentReadPosition;
size_t m_DataSize;
} MyMemoryFile;
の符号はsize_t
実際には定義されていないようです。グーグルのコード検索はそれを証明した。
今、私はジレンマに陥ってsize_t
います。ユーザーが提供したデータを処理する必要があり、サードパーティのライブラリが私のコードを使用するため、オーバーフローがないか追加をチェックしたいと思います。ただし、オーバーフローチェックでは、符号を知る必要があります。それは実装に大きな違いをもたらします。
では、プラットフォームやコンパイラに依存しない方法で、このようなコードをどのように書くべきでしょうか?
size_t
実行時またはコンパイル時にの署名を確認できますか?それは私の問題を解決するでしょう。あるいはsize_t
、そもそも最善のアイデアではなかったのかもしれません。
何か案は?
編集:私はC言語の解決策を探しています!