获取执行文件路径

来源:互联网 发布:类的定义 c语言 编辑:程序博客网 时间:2024/05/17 19:17

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微软在操作系统上的返回值可能有不同的含义,故除了看文档,还要看实际中的情况

http://download.csdn.net/detail/zhang_ruiqiang/9116267

0 0
原创粉丝点击