Cygwin + MinGW + GCC 相談室 Part 8at TECHCygwin + MinGW + GCC 相談室 Part 8 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト950:デフォルトの名無しさん 23/10/10 09:18:07.78 vCJOXgr3.net スレチ 951:デフォルトの名無しさん 23/12/24 13:46:07.33 zZdFC2zj.net 質問です。 ・ OS は windows10 で、最近 MinGW-w64 を導入した。 ・ 下記の test.cpp ファイルに対して g++ -m64 -o test5 test.cpp と実行。 test.cpp #include <stdio.h> #include <stdint.h> int main(){ printf("%d %x %zu", sizeof(long), sizeof(long), sizeof(long)); getchar(); return 0; } ・ 出力された test5.exe を実行してみると、なぜか「4 4 4」と表示されてしまい、 「8」が1個もない。64ビット環境では、sizeof(long) は「8」なのでは? ・ test5.exe を右クリックして互換モードの欄を見てみると、 Vista 以降のものしか表示されないので、 ちゃんと64ビット版の実行ファイルになっている (他にも色々な確認方法があるが、いずれも64ビット版に合致する)。 ・ それなのに「8」と表示されないのはなぜ? 952:はちみつ餃子 23/12/24 15:28:23.49 SfA3xmSz.net >>951 > 64ビット環境では、sizeof(long) は「8」なのでは? 単にその認識が誤り。 64ビット版の Windows の ABI では long は 4 バイトと規定してる。 https://learn.microsoft.com/ja-jp/cpp/build/x64-software-conventions?view=msvc-170#scalar-types コンパイラが OS の規定に逆らって独自の仕様にしたってかまわないんだけど、 やりとりがややこしくなっちゃうだけで得なことはないからね。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch