X



スレを勃てるまでもないC/C++の質問はここで 25 [隔離病棟]©2ch.net
0407404
垢版 |
2024/03/19(火) 19:03:35.85ID:qI3ILkQW
>>406
エラーや警告は一切ありませんでした。
と言うか解決した今だから言えますが、私が馬鹿でした。

ええと、構造体ポインタに構造体の実体を代入していました。 そらヒープエリアも突き破るってもんで。
こんな感じ。

struct AAA data[2];
struct AAA *aaa;    // *ではなく**
aaa=(struct AAA*)malloc( sizeof(struct AAA*) *2):
aaa[0]=data[0];    // &data[...
aaa[1]=data[1];    // &data[...

プログラムは、(間違った)意図通りにちゃんと動いていたみたいです(笑)。
0408デフォルトの名無しさん
垢版 |
2024/05/03(金) 13:00:20.63ID:Vf2Lxl94
clangは、--targetオプションでターゲットを変更できますが
ひょんなことから、どうも、このオプションを無指定の時の
デフォルト値が、システムにインストールされているmsvcの
バージンによって変化するようなのですが、詳しい方
いらっしゃいませんか。たとえばそれにより、
char16_tがbuilt-in typeになるかどうかに違いが出てきます。
VS2019をインストールしていないとき、clang10やclang16(?)
は、デフォルトでは、char16_tがbuilt-in typeではありません。
このとき、出力された*.llの冒頭に灰化の記述があります:
target triple = "i686-pc-windows-msvc14.0.50727"
ところが、
-fms-compatibility
-fms-compatibility-version=19
を指定すると、char16_tがbuilt-in typeになり、
*.ll の冒頭の記述が変化し、
target triple = "i686-pc-windows-msvc19.0.0"
となります。上記のオプションの代わりにコマンドラインに
--target=i686-pc-windows-msvc19.0.0
と指定してもchar16_tに関してはbuilt-in type になりました。

ここまではいいのですが、不思議なことに、これらのオプションを
全く指定しなくても、なぜか、char16_t が built-in typeになって
いたことがありました。そのときは、インストールした時点で
VS2019がインストールされていたと思います。
今はインストールされていません。
レスを投稿する


ニューススポーツなんでも実況