問題タブ [size-t]
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.
c++ - unsignedintとsize_t
最近のCおよびC++コードは、C文字列関数のパラメーターからSTLまで、ほとんどすべての場所で/size_t
の代わりに使用されているようです。この理由とそれがもたらすメリットについて興味があります。int
unsigned int
c++ - size_t型の変数のクロスプラットフォームフォーマット文字列?
クロスプラットフォームのc/c ++プロジェクト(Win32、Linux、OSX)では、*printf関数を使用してsize_t型の変数を出力する必要があります。一部の環境ではsize_tは8バイトで、他の環境では4バイトです。glibcでは%zdがあり、Win32では%Idを使用できます。これを処理するエレガントな方法はありますか?
c - size_tの追加でオーバーフロー
VS.NETとGCCのコード警告を無料にし、64ビットのコードを用意したいと思っています。
今日、私はメモリバッファを処理し、ファイルスタイルのインターフェイスを介してデータへのアクセスを提供する小さなモジュールを作成しました(たとえば、バイトの読み取り、バイトの書き込み、シークアラウンドなど)。
現在の読み取り位置とサイズのデータ型として、size_tを使用しました。これが最も自然な選択であると思われるためです。警告を回避し、64ビットでも動作するはずです。
念のため:私の構造は次のようになります:
の符号はsize_t
実際には定義されていないようです。グーグルのコード検索はそれを証明した。
今、私はジレンマに陥ってsize_t
います。ユーザーが提供したデータを処理する必要があり、サードパーティのライブラリが私のコードを使用するため、オーバーフローがないか追加をチェックしたいと思います。ただし、オーバーフローチェックでは、符号を知る必要があります。それは実装に大きな違いをもたらします。
では、プラットフォームやコンパイラに依存しない方法で、このようなコードをどのように書くべきでしょうか?
size_t
実行時またはコンパイル時にの署名を確認できますか?それは私の問題を解決するでしょう。あるいはsize_t
、そもそも最善のアイデアではなかったのかもしれません。
何か案は?
編集:私はC言語の解決策を探しています!
c++ - 「std::size_t」はC++で意味がありますか?
私が継承した一部のコードでsize_t
は、std
名前空間修飾子で が頻繁に使用されています。例えば:
もちろん、コンパイルして正常に動作します。しかし、それは私には悪い習慣のように思えます (おそらく C から持ち越されたのでしょうか?)。
size_t
C++ に組み込まれているため、グローバル名前空間に組み込まれているというのは本当ではないでしょうか? size_t
C++ で使用するにはヘッダー ファイル インクルードが必要ですか?
この質問をする別の方法は、次のプログラム (インクルードなし) は、すべての C++ コンパイラでコンパイルされると予想されるかということです。
visual-c++ - 64 ビットの移植性の問題
これはすべて、次の行を実行しようとしたときに、コンパイラの警告メッセージ (C4267) を突っ込んだことが原因です。
size()
unsigned int に typedef されていますが、実際には unsigned int ではない size_t を返します。これは64ビットの移植性の問題に関係していると思いますが、誰かが私のためにもう少しうまく説明できますか? (64ビットの警告を無効にしたいだけではありません。)
c - 32 ビットとさまざまな 64 ビット データ モデルの sizeof(size_t) は何ですか?
64 ビット システムでsizeof(unsigned long)
は、システムによって実装されるデータ モデルによって異なります。たとえば、LLP64 (Windows) では 4 バイト、LP64 (Linux など) では 8 バイトです。あるべきものは何sizeof(size_t)
ですか?データモデルによって異なりますsizeof(long)
か? もしそうなら、どのように?
参考文献:
c++ - Ubuntu 8.1 で g++-4.1 などで size_t が見つからない
これは以前にも発生しましたが、どのように修正したか思い出せません。
ここで、新しいUbuntuインストールでいくつかのプログラムをコンパイルできません...ヘッダーに何か問題があります。
g++-4.1 と 4.3 を試してみましたが、うまくいきませんでした。
ファイル...
types.h は間違いなくパスにあり、ピックアップされています。ファイル名を変更して確認したところ、見つからないというエラーが表示されました...
誰にもアイデアはありますか...?私は本当に助けていただければ幸いです...
c++ - size_tに関する問題
私の投稿履歴を見ると、私が取り組んでいる言語の通訳者を開発しようとしていることがわかります。2つの異なるコード を使用してsize_tを使用したいのですが、すべて何も返されません。
これが私が試していたものの投稿です:http ://stackoverflow.com/questions/1215688/read-something-after-a-word-in-c
テストしているファイルを使おうとすると、何も返されません。これがサンプルファイルです(私の言語で開発しようとしている印刷関数のみ):
ただし、これはPythonでの印刷のようなものであり、ユーザーがquotes( "")に入力するものはすべてに印刷する必要があることを忘れないでください。ユーザーは引用符に入れるものを選択できるので、簡単なカウト、引用符の中にあるものを読んで、それをすべてに印刷する何かを投稿してください。しかし、これを行うための2つのテストコードがありますが、それらはすべて私に何も返しません。
二番目:
そして、これがコンソールに印刷されるものです:
私が言ったように、それは私に何も印刷しません。 DICの私の投稿を参照してください:http ://www.dreamincode.net/forums/showtopic118026.htm
ありがとう、ネイサン・パウリーノ・カンポス
c++ - size_t の否定 (つまり、`-sizeof(struct foo)`)) はどうなりますか?
フォームの式を含む作業中のコードを扱っています
つまり、 a の否定でありsize_t
、C および C++ 標準がこれを確認したときにコンパイラに何を要求するかについては不明です。具体的には、ここや他の場所を見回すとsizeof
、 型の符号なし整数値が返されますsize_t
。符号なし整数を否定するときの指定された動作の明確な参照が見つかりません。あるとすれば、それは何ですか?
編集: わかりましたので、符号なし型の算術演算に関していくつかの良い答えがありますが、これが実際にそのようなものであるかどうかは明らかではありません。これが否定されるとき、それは符号なし整数で動作していますか、それとも符号付き型に変換してそれで何かをしていますか? 標準から期待される動作は、「それが同様の大きさの負の数であると想像し、符号なし値に「オーバーフロー」ルールを適用する」ことですか?