1.问题
原来代码在win7下可以正常运行在xp下无法输出
mymain.cpp
#include <stdio.h>
#include <Windows.h>
#include <string>
int main()
{
wchar_t pwbuf[MAX_PATH] = {0};
DWORD dwRet = GetModuleFileNameW(NULL, pwbuf, MAX_PATH);
if (dwRet != 0)
{
std::wstring strpath(pwbuf);
int npos = strpath.find_last_of(L'\\');
if (npos != -1)
strpath.erase(npos + 1);
wprintf(L"%s\n", strpath.c_str());
}
system("pause");
return 0;
}
2.解决
在xp下返回值为0成功,在win7下返回非0成功 修改后的代码
#include <stdio.h>
#include <Windows.h>
#include <string>
int main()
{
wchar_t pwbuf[MAX_PATH] = {0};
DWORD dwRet = GetModuleFileNameW(NULL, pwbuf, MAX_PATH);
#if (WINVER >= 0x0501)
if (dwRet != 0)
#else
if (dwaRet == 0)
#endif
{
std::wstring strpath(pwbuf);
int npos = strpath.find_last_of(L'\\');
if (npos != -1)
strpath.erase(npos + 1);
wprintf(L"%s\n", strpath.c_str());
}
system("pause");
return 0;
}
3.备注
有很多api微软在操作系统上的返回值可能有不同的含义,故除了看文档,还要看实际中的情况