[解決済み] uint64_t定数はどのように定義するのですか?
2022-02-14 18:24:18
質問
C++プログラム(clang 6.0.1 in QtCreator 4.6.1)でuint64_t定数を使用しています。
例えば
uint64_t a = 0xffffffffffffffffULL;
問題は、IDEで以下の警告が表示されることです。
Warning: implicit conversion from 'unsigned long long' to 'uint64_t' (aka 'unsigned long')
また、次のように変更してみましたが、うまくいきませんでした。
uint64_t a = UINT64_C(0xffffffffffffffff);
uint64_t a = 0xffffffffffffffffUL;
C++14標準とオプションで計算するオプションがあります。
-Wconstant-conversion
型の大きさを確認する。
std::cout << "uint64_t " << sizeof (uint64_t) << std::endl;
std::cout << "unsigned long " << sizeof (unsigned long) << std::endl;
std::cout << "unsigned long long " << sizeof (unsigned long long) << std::endl;
結果
uint64_t 8
unsigned long 8
unsigned long long 8
これを修正する方法と、IDEがサイズ変換が起こっていると考える理由について、何か思い当たることはありますか?
編集:今、マクロ展開を確認しました。
define UINT64_C(c) c ## UL
つまり、この例はうまくいくはずなのですが、うまくいきません。
uint64_t a = 0xffffffffffffffffUL;
解決方法は?
この警告は @hvd さんのコメントで解決しました。
インクルードされている全てのヘッダーファイルを確認しました。何らかの理由で、両方の
stdint.h
と
cstdint
が含まれていました。のみを残しました。
cstdint
. これらは、おそらく異なるプラットフォームのもので、定義も異なるのでしょう。
動作例です。
uint64_t v0 = UINT64_C(0x736f6d6570736575);
関連
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] C++でPI定数を使用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較