我有以下代码尝试从给定位置读取INI文件,如果失败则尝试在当前目录中打开。我的应用程序有两种执行模式,MAM和No MAM,因此是变量名。
{
const char section[]="CONFIG";
const char key[]="HEAP";
char value[16];
const char pwcfgFileMam[]="..\\pwcfg.ini";
const char * const pwcfgFileNoMam = pwcfgFileMam + 1;
long rc;
DWORD rcProfile;
value[0] = '\0';
rcProfile= GetPrivateProfileString( section, key, "", value,
sizeof(value)-1, pwcfgFileMam );
if ( 0 == rcProfile )
{
rcProfile = GetPrivateProfileString( section, key, "", value,
sizeof(value)-1, pwcfgFileNoMam );
}
// DO_SOMETHING(value);
}
根据official documentation,该功能仅适用于full paths这是绝对路径的另一个名称,但只要您放置.\
或{{1},此代码段就可以正常工作路径上的前缀。我以前在第6行有一个错误,它编码如下:
..\
因此,该功能可能无法仅使用文件名,它至少需要const char * const pwcfgFileNoMam = pwcfgFileMam + 3;
或.
到"找到"文件。我的老板告诉我,该功能在另一个进程或上下文或其他东西中运行,因此它需要"路径"强制此其他上下文查询其..
的requirer。任何人都有一个更彻底的答案,为什么这个函数的行为像这样?这只是一个执行不当且记录严重的API的情况吗?
哦,顺便说一句,我在Windows 7计算机上使用Visual Studio 2008编译此代码。