0

コンパイルするモードが 32 ビット モードか 64 ビット モードかに関係なく、long を 8 バイトにしたいと考えています。私は MSVC を使用していますが、現時点ではクロスプラットフォームについてはあまり気にしていません。私は次のようなことをやってみました

#define long __int64

また

typedef __int64 long;

しかし、最初のものは他のファイルで大規模なコンパイルエラーを引き起こし、2番目のものはコンパイラ自体では受け入れられないようです.

4

1 に答える 1

0

予約型のデフォルトの動作は変更しません。より良い方法は、必要に応じて新しいタイプを作成し、それを操作することです。

thirdPartyLib を含め、その「h」ファイルに次のようなものがある場合を考えてみてください。

void func1(long number);

コードに「h」ファイルが含まれている場合、「number」パラメーターは 64 ビットとして表示されますが、lib の元の「c」ファイルにその「h」が含まれている場合、「number」は 32 ビットであると見なすことができます。これは、リンケージ段階で問題を引き起こします。

于 2013-02-24T12:02:17.630 に答える