C++コードが32ビットと64ビットのどちらでコンパイルされているかを判定する方法
C++の標準仕様には、実行環境のアーキテクチャ(32ビットか64ビットか)を直接確認する機能は用意されていません。しかし、Windowsシステム向けには、アーキテクチャをチェックするための2つのマクロが提供されています。それが _WIN64 と _WIN32 です。
システムが64ビットの場合は _WIN64 が 1 に定義され、そうでない場合(32ビットの場合)は _WIN32 が 1 に定義されます。このマクロを条件付きコンパイルで確認することで、プログラムがどちらのアーキテクチャ向けにコンパイルされているかを判別できます。
サンプルコード
#include <iostream>
using namespace std;
int main() {
#ifdef _WIN64
cout << "This is 64 bit system" << endl;
#elif _WIN32
cout << "This is 32 bit system" << endl;
#endif
}出力結果
This is 64 bit system
補足:Windows以外の環境での判定方法
LinuxやmacOSなどWindows以外のプラットフォームでは、GCCやClangが自動的に定義するマクロ(__x86_64__、x86_64 など)を利用するのが一般的です。また、sizeof(void*) の値が 8 なら64ビット、4 なら32ビットと判断する方法も、移植性の高い手法として知られています。
-
iPhoneにスパイウェアが感染していないか確認する方法|3種類の脅威と対策を徹底解説
初めてiPhoneを購入する前の生活を、今でも覚えていますか?Appleのこの便利なモバイルデバイスは、長い進化を遂げながら、多くの人々の生活を変えてきました。 テクノロジーの進歩は新たな創造性を生み出し、iPhoneの新しい使い方を次々と切り拓いています。しかし残念なことに、それと同時に、セキュリティやプライバシーが脅かされるリスクも高まっているのです。 iPhoneを脅かすスパイウェアの3種類 「自分のiPhoneにスパイウェアなんて入っているはずがない」と思うかもしれません。しかし現代では、電池と画面さえ備えていれば、あらゆるデバイスがサイバー攻撃の標的になり得ます。SNSが普及した今こ
-
Windows 10で発生する「このデバイスのソフトウェアは開始できませんでした」エラー(コード48)の対処法
Windowsで「既知の問題があるため、このデバイスのソフトウェアは開始できませんでした(The Software For This Device Has Been Blocked From Starting Because it is Known To Have Problems With Windows)」というエラーに遭遇したことはありませんか?実際のエラーメッセージは以下のスクリーンショットのような表示になります。これは「エラーコード48」とも呼ばれ、主にシステムに最近の変更が加えられた際や、Windowsが認識していない新しいハードウェアをインストールした際、あるいは周辺機器のデバイ