[ad_1]
だから私は完全に動作するこれらの機能を持っています:
C++
void pushw(int16_t x) { push((x & 0xFF00) >> 8); push(x & 0x00FF); } void pushd(int32_t x) { pushw((x & 0xFFFF0000) >> 16); pushw(x & 0x0000FFFF); }
しかし、私がこれを行うとき:
C++
void pushq(int64_t x) { pushq((x & 0xFFFFFFFF00000000) >> 32); pushq(x & 0x00000000FFFFFFFF); }
それはコンパイルされますが、メイン関数にあるすべての出力をスキップします。ここから、プッシュ関数も呼び出しています。 どうしてこれなの?
私が試したこと:
私は何も試していません。なぜ私の入力を聞かないのか完全に混乱しています。
解決策 1
あなたのコードを見てください:
void pushq(int64_t x) { pushq((x & 0xFFFFFFFF00000000) >> 32); pushq(x & 0x00000000FFFFFFFF); }
それで pushq
通話 pushq
、呼び出します pushq
、これは … スタック スペースがなくなり、アプリがクラッシュするまで続きます。
電話するつもりだったの? pushd
その代わり? その場合、一部のコンパイラでの警告を回避するために、値もキャストする必要があります。
[ad_2]
コメント