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