問題タブ [gcc4.9]

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 投票する
1 に答える
794 参照

c++ - 構造体の初期化におけるgcc 4.9のバグ?

私はコードを持っています:

私は gcc 4.8.2 と 4.9.2 を持っています。次の方法で問題なくコンパイルできます。

ただし、次のようにコンパイルすることはできません。

コンパイラの出力は次のとおりです。

これはバグですか、それとも私が何かを理解していないだけですか?

0 投票する
5 に答える
1727 参照

c++ - gccではなくVisual Studioを使用して「stol」によってスローされた例外

次のコードは、Visual Studio 2013 で実行すると例外をスローしますが、gcc 4.9.2 ではスローしません。

報告されたエラーは次のとおりです。

「例外: stol 引数が範囲外です」

stolは a を返すlongので、 のサイズはtemp戻り値を保持するのに十分な大きさでなければなりません。

誰でもその動作を説明できますか。これはおそらくコンパイラのバグですか?

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

memory-alignment - ARM Cortex-M4、uint64_t、および GCC 4.9 の va_arg

次のコードがあります。

これを実行すると、次の値が得られます。

arg1 = 0xABABABAB

arg2 = 0x24242424F0F0F0F0

arg3 = 0x010048E7

変数 arg3 には Flash のアドレスが含まれているようです。

これはスタック アライメントが原因である可能性があることをどこかで読みました (これが、これらすべてのアライメント属性が表示される理由であり、特に変数を関数スコープ外に外部化した理由です)。また、「-mabi=aapcs -std=c99」フラグを使用してコードがコンパイルされていることも確認しました。

関数が呼び出されたときに {r0-r3} レジスタを調べたところ、最初の 3 つの引数が正しく含まれているようです (r2 と r3 にはリトルエンディアン ワードで 64 ビット値が含まれています)。

例外中 (たとえばハード フォールト)、可変個引数が適切に機能することに気付きました。また、MCU は例外ルーチンに入るときに 8 ビット スタックを使用するように設定されているため、これが何が起こっているかの説明になります。

実際に何が起こっているのかを理解するための助けは本当にありがたいですか? これはどのように修正できますか?