Mike L. Wrote:

> I saved and compiled the code given as getenv.d on the page 
> http://www.digitalmars.com/d/archives/digitalmars/D/learn/623.html but I'm 
> not entirely sure why it works.
> 
> The reasons that I don't understand it are:
> 1. GetEnvironmentStringsA() and the other functions aren't mentioned in 
> std/c/windows/windows.d .

It is not defined int std.c.windows.windows, that's why it is defined in the 
code itself:

# // function retrieves the environment variables for the current process.
# extern( Windows ) LPVOID GetEnvironmentStringsA();
#  

> and I can compile it with a simple "dmd getenv.d" without passing any other 
> object files or libraries. If it's not in windows.d, why is windows.d even 
> imported?
> 

std.c.windows.windows is imported so that compiler knows about LPSTR, LPVOID, 
BOOL etc.

> 2. MSDN says that GetEnvironmentStringsA() returns LPTCH but getenv.d's 
> version returns LPVOID.

That's true, you should update function's return type and remove unneccessary 
casts:

extern( Windows ) LPTSTR GetEnvironmentStringsA();
...
for (lpszVariable = lpvEnv; *lpszVariable; lpszVariable++)

Reply via email to