how to detect OS architecture?

Hugo Florentino hugo at acdam.cu
Mon Dec 16 05:19:40 PST 2013


On Mon, 16 Dec 2013 12:59:52 +0100, John Colvin wrote:
> On Monday, 16 December 2013 at 11:56:07 UTC, Hugo Florentino wrote:
>> On Mon, 16 Dec 2013 12:40:17 +0100, MrSmith wrote:
>>> I think this is what he want
>>> http://dlang.org/phobos/core_cpuid.html#.isX86_64
>>
>> Thanks, that's precisely what I needed :)
>
> Are you sure?
>
> This will tell you about the processor, but not necessarily about
> what the OS supports. I don't know, but you may find that when using
> windows 32bit on an x64 machine, cpuid will tell you the cpu is 
> 64bit,
> but the OS won't let you run any 64bit code.

You are right. I realized that this function was not quite what I 
needed when running this code on a 32 bit system:

import std.stdio, core.cpuid;

int main() {
   immutable auto appname = "myapp";
   auto appversion = !isX86_64() ? appname ~ "32" : appname ~ "64") ~ 
".exe";
   scope(failure) return -1;
   writeln(appversion);
   return 0;
}

I was expecting "myapp32.exe" but got "myapp64.exe". Apparently what 
isX86_64() detects is the capability of the processor, not the 
arquitecture of the OS.

So currently D has no specific function for detecting the OS 
architecture at runtime? I had not expected this.

I will try using the other options though. Thanks


More information about the Digitalmars-d-learn mailing list