問題タブ [stdint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
206 参照

c - C コードの型をリファクタリングするためのツール

C コードの型 (!) をリファクタリングできるツールを探しています。

複雑で比較的大きなコードベースがあり、組み込みの整数型から明示的な幅を持つ型に切り替えることにしました。「 unsigned int 」のすべてのインスタンスを「uint32_t」に変更するなど。

たとえば、名前をリファクタリングするためのツールがたくさんあることは知っていますが、タイプを完全にリファクタリングできるツールはありません。たとえば、Visual Assist は "long" を単一のトークンとしてリファクタリングできる場合がありますが、"unsigned long" はリファクタリングできません。

0 投票する
3 に答える
1038 参照

c++ - uintptr_t が stdint.h で定義されているかどうかを知る移植可能な方法はありますか?

プリアンブル: ポインターを整数型に変換したい (アライメントをチェックするなど)。uintptr_t正しい型のようですが、C++ (または C++11) ではなく、C でのみ保証されています。

次のコードの場合:

2 つの質問:

  • 置いたところに使える魔法と約束の言葉はありI_WONDER_IF_UINTPR_T_IS_DEFINEDますか?
  • 私はそれを使用unsigned longして忘れるべきですか?

生成されたアセンブリ (uintptr_t が利用可能な場合): http://goo.gl/4feUNK

注 1: C++11alignofの代わりに使用する必要があるsizeof
ことを認識しています 注 2: この議論を認識しています: <cstdint> vs <stdint.h>

0 投票する
1 に答える
265 参照

c - stdint.h の int32_t 、 uint16_t .... とは

int32_t と uint16_t は何を参照していますか?

そしてそれらは何ですか:マクロ、データ型...

そして、どこでそれらを使用できますか?

0 投票する
1 に答える
2126 参照

c - ヘッダー ファイルに stdint.h をインクルードすると、clock_gettime() でコンパイルが中断する

私のCファイルはclock_gettime(). これが機能するためには、man ページに従って、 が 含まれて<time.h>おり、 に定義_POSIX_C_SOURCEされています。(200112L)

次のオプションを使用してコンパイルおよびリンクします。

、およびPROJ_SETTINGS_INC設定を含む h ファイルに設定されます。

これまでのところ、問題ありません。

ここで、設定ファイルを変更して を使用するuint16_tので<stdint.h>、設定 h ファイルに含めます。

clock_gettime()コンパイラは、それが暗黙の宣言であると不平を言うようになりました。

設定ファイルをintの代わりに使用するように戻し、uint16_tインクルードを に削除すると<stdint.h>、コンパイルが再び機能します。

<stdint.h>設定に h ファイルを含めると、なぜでのコンパイルが中断されるのclock_gettime()ですか?

私の最善の推測は、stdint定義を再定義することですが、ソースの最初の行でインクルードが行われたかのようにディレクティブが機能POSIXするため、意味がありません。-include


ここに例があります(ジョン・ボリンジャーの答えに照らして、何がうまくいかないのか理解し始めましたが、とにかくこれを書くと思いました)。

bar.h:

foo.c

ビルド:

奇妙なことに、これは有用な警告を与えます。私の元のアプリケーションでは、暗黙の宣言エラーのみが発生しました。

0 投票する
1 に答える
91 参照

c - ユーザー入力に応じて特定の幅変数を宣言する最良の方法

以下に示すようなコードがあります。ここのコードは、word_size = 64. 同様に、32 と 16 も必要です。encryptすべてのサイズで同じ関数を再利用する方法が見つかりません。さらに、word_size に従って変数も宣言する必要があります。uint_16またはuint_32またはのどちらを使用するかuint_64は、word_size によって異なります。この場合、再利用可能なコードを書くのを手伝ってもらえますか?

必要に応じて、さらに情報を提供できます。

0 投票する
1 に答える
470 参照

c - int32_t からバイトのブロックを抽出し、c を使用して int16_t または int8_t に格納するにはどうすればよいですか?

たとえば、次のようにします。

最上位2バイトを次のように格納したいint8_t:

または、次の 4 つの最上位バイトint16_t:

これどうやってするの?

0 投票する
0 に答える
464 参照

c++ - GCC が __INT8_MIN__ ではなく __INT8_MAX__ のみを定義するのはなぜですか?

GCC の定義済みマクロには が含まれていますが、含まれて__INT8_MAX__いません__INT8_MIN__

INT8_MINで定義されstdint.hてい(-__INT8_MAX - 1)ます。

GCC は、システムが 2 の補数であると想定していますか? は、1 の補数システムと 2 の補数システムの両方で機能するため(INT8_MAX +1)、より良い定義方法だと思います。最適なのはコンパイラ提供のです。INT8_MIN__INT8_MIN__

gcc が提供しないのはなぜ__INT8_MIN__ですか?

私は実際に 2 の補数を使用しないシステムを持っていないので、使用に問題はありませんが、ただ興味があります。

0 投票する
3 に答える
21367 参照

c++ - SIZE_MAX を定義する C++ 標準ヘッダーはどれですか?

私は、たまたまSIZE_MAXいくつかの場所で使用されている既存の C++ コードベースに取り組んでいます。いくつかのリファクタリングを行いSIZE_MAXましたが、モジュールの 1 つで定義されていません。この問題は、Travis-CIが Linux でプロジェクトをビルドしようとしたときに発生しました。リファクタリングする前は問題なく動作していましたが、どのヘッダー ファイルが含まれていたかを正確に追跡することは困難です。

問題をローカルで再現しようとして、デフォルトの gcc を使用して Ubuntu VM をインストールし、再現することができました。関連するソースは次のとおりです。

コマンド ラインは次のとおりです。

エラーは次のとおりです。

システム情報:

cstdintstdint.hlimits.hinttypes.hstdio.hstdlib.hおよびおそらく他のいくつかを含めようとしましたが、 に必要な特定のヘッダー ファイルがわかりませんSIZE_MAX

私が取り組んでいるプログラムは、SIZE_MAXいくつかの変更を加える前に、さまざまな場所で使用され、正常にコンパイルされたことに注意することが重要です。私が行った変更により、それが使用された1 つの ソース ファイルで未定義になりました.cpp(他のファイルは引き続き問題ありません)。したがって、私のシステムには、正しく定義されているヘッダー ファイルがいくつか存在します。