我在这里花了很多时间寻求帮助,以解决显然是常见错误的问题,但我所看到的似乎都不适合我的情况。
我正在将一个用 Visual Studio 6 C++ 编写的旧外源程序迁移到 Visual Studio 2012,幸运的是我不是 C++ 程序员(只是一个低级的 VB 和 C# 开发人员)。迁移向导和 Internet 在帮助我查找和更正向导无法处理的代码方面提供了很大帮助。
在这个代码块中,我相信它只不过是创建一个目录
int CreateAllDirectories(const char* pszDir)
{
char* pszLastSlash;
char cTmp;
if( _access( pszDir, 0 ) != -1 ) {
// it already exists
return 0;
}
pszLastSlash = strrchr( pszDir, '\\' );
if ( pszLastSlash ) {
cTmp = *pszLastSlash;
*pszLastSlash = '\0';
// try again with one less dir
CreateAllDirectories( pszDir );
*pszLastSlash = cTmp;
}
if ( _mkdir( pszDir ) == -1 ) {
return -1;
}
return 0;
}
将 strrchr( pszDir, '\' ) 的结果分配给变量 pszLastSlash 时会产生错误。从这段代码的其余部分看起来像 pszLastSlash = strrchr( pszDir, '\' ); 是一个有效的表达式。
对我来说看起来像双反斜杠和转义序列的问题是什么。