C++에서 컴파일 아키텍처(32비트/64비트) 확인하기
C++ 표준에는 프로그램이 실행되는 환경의 아키텍처를 직접 확인하는 기능이 제공되지 않습니다. 대신 전처리기 매크로(preprocessor macro)를 활용하면 컴파일 시점에 시스템이 32비트인지 64비트인지 판별할 수 있습니다.
Windows 환경에서는 _WIN64와 _WIN32라는 두 가지 매크로를 사용할 수 있습니다. 코드가 64비트로 컴파일되면 _WIN64 매크로가 정의되며, 32비트로 컴파일되면 _WIN32 매크로가 정의됩니다. 이러한 매크로 검사를 통해 현재 빌드된 아키텍처를 쉽게 식별할 수 있습니다.
예제 코드
#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
주의할 점
64비트 Windows에서는 _WIN32도 함께 정의된다는 점에 유의해야 합니다. 따라서 위 예제처럼 반드시 _WIN64를 먼저 검사해야 올바른 결과를 얻을 수 있습니다.
또한 Windows가 아닌 플랫폼(Linux, macOS 등)에서는 __x86_64__, _M_X64, __LP64__ 같은 컴파일러별 매크로를 활용하면 유사한 방식으로 64비트 환경 여부를 확인할 수 있습니다.