1

オペレーティングシステムのビットをどのように知ることができますか? 前もって感謝します。

4

4 に答える 4

1

Linux では、このような一般的な質問に対する答えは、

uname -m

あるいは:

getconf LONG_BIT

C では、una​​me(2) システム コールを使用できます。

ウィンドウでは、次を使用できます。

systeminfo | find /I "System type"

または環境を調べます。

set | find "ProgramFiles(x86)"

(または C の getenv() を使用)

于 2012-06-08T18:52:59.010 に答える
0

元の質問:

Cまたは他の方法でオペレーティングシステムのビットを知る方法は?

正しい方法は、何らかのシステム API またはコマンドを使用してアーキテクチャを取得することです。C で比較するとsizeof、システム ポインターのサイズはわかりませんが、ターゲット アーキテクチャのポインター サイズはわかります。これは、ほとんどのアーキテクチャ/OS が下位互換性を備えているため、以前の 16 または 32 ビット プログラムを問題なく実行できるためです。32 ビット プログラムのポインターは、64 ビット OS でも 32 ビット長のままです。また、64 ビット アーキテクチャであっても、一部の OS ではx32-abiなどの 32 ビット ポインターを引き続き使用する場合があります。

于 2013-09-11T04:47:34.730 に答える
-1

不注意と間違いでごめんなさい。Linux専用です。Linuxデバイスドライバー3rd、11.1セクション:標準Cタイプの使用。それは言う

このプログラムを使用すると、さまざまなLinuxコンピューターでプログラムを実行することで示されるように、64ビットプラットフォームで長整数とポインターのサイズが異なることを示すことができます。

アーチサイズ:char short int long ptr long-long u8 u16 u32 u64

i386 1 2 4 4 4 8 1 2 4 8

アルファ124 8 8 8 1 2 4 8

armv4l 1 2 4 4 4 8 1 2 4 8

ia64 1 2 4 8 8 8 1 2 4 8

m68k 1 2 4 4 4 8 1 2 4 8

mips 1 2 4 4 4 8 1 2 4 8

ppc 1 2 4 4 4 8 1 2 4 8

sparc 1 2 4 4 4 8 1 2 4 8

sparc64 1 2 4 4 4 8 1 2 4 8

x86_64 1 2 4 8 8 8 1 2 4 8

そして、いくつかの例外があります。例:

SPARC 64アーキテクチャは32ビットのユーザースペースで実行されるため、カーネルスペースでは64ビット幅ですが、ポインターは32ビット幅であることに注意してください。これは、kdatasizeモジュール(サンプルファイル内のディレクトリmisc-modulesで利用可能)をロードすることで確認できます。モジュールは、printkを使用してロード時にサイズ情報を報告し、エラーを返します(したがって、アンロードする必要はありません)。

@ user1437033 Windowsはgcc標準と互換性がないと思います。そのため、Windowsのプログラマーから回答が得られるかもしれません。@Paul R通常のコードと見なす必要がありますよね?arm(32ビットしかない)などのクロスコンパイルツールを使用すると、答えも得られません。

追伸:Dev C ++コンパイラの使用はサポートしていません。多くのシーンで奇妙で、標準ではありません。コードブロックまたはvs2010が適切な選択かもしれません。これがお役に立てば幸いです。

于 2012-06-07T17:44:33.557 に答える