0
#ifndef UNICODE
#define UNICODE
#endif
#include <Windows.h>
#include <cstdio>
TCHAR* getSystemVolumine()
{
TCHAR volumine[2];
TCHAR buffer[30];
GetSystemWindowsDirectory(buffer,30);
for(int i=0 ; i < 2 ; i++)
volumine[i]=buffer[i];
return volumine;
}
int main()
{
wprintf(L"Your system volumine letter%s\n",getSystemVolumine());
system("pause");
}
我不知道这段代码有什么问题。调试结果显示没有错误,也没有警告,但输出是:获取包含Windows系统目录的驱动器的盘符
Your system volumine letter
Press any key to continue...
我认为做volumine静态变量是多simplier解决方案:) – 0x6B6F77616C74 2012-04-28 14:27:11
只是FWIW:它通常建议避免使用静态因此,如果代码是由多线程后,你就不会遇到问题;调用者提供缓冲区(上面)或者让函数返回一个新的缓冲区被认为是更清晰的。即使在单线程代码中,如果某段代码保存了指针,并且以后的调用会更改缓冲区中的值,则可能会出现问题。然而,在这种特殊情况下,由于系统目录是常量,并且在进程的整个生命周期内不会改变(对于所有线程都是一样的),所以静态在这里是很好和安全的。 – BrendanMcK 2012-04-30 17:30:25