次の関数プロトタイプを持つ gcc を使用して、Linux でソース コードのチャンクを維持する必要があります。
int foo(const void*, ...)
この関数に整数を渡す必要があります。これが悪い考えであることは承知していますが、この段階では、ソース コードを変更することは許可されていません。
つまり、私は電話しなければなりませんfoo(n)
(n
は として定義されますint n
)
64 ビット マシンでは、次のエラーが発生します。
cast to pointer from integer of different size
私が理解しているように、これは 32 ビット マシンの整数のサイズが 4 バイトであるのに対し、void へのポインターのサイズは 8 バイトであるためです。
最初にサイズ 4 バイトの整数をサイズ 8 バイトの long にキャストすることで、コンパイル エラーを解決します。だから私はやったfoo((long)n)
これがこの問題に対処するための許容可能な方法なのか、それとも他に提案があるのだろうか?