Не могу понять, почему так работает
char* pPathToINI = new char[MAX_LENGTH];
...
{
...
char* pBuffer = new char[MAX_LENGTH];
pBuffer = GetCurrentPath(pBuffer);
lstrcpy(pPathToINI,pBuffer);
}
char* pFullPathToINI = lstrcat(pPathToINI,INIFILE);
А вот так - нет, компилятор ругается благим матом.
char* pPathToINI = new char[MAX_LENGTH];
...
{
...
char* pBuffer = new char[MAX_LENGTH];
pBuffer = GetCurrentPath(pBuffer);
lstrcpy(pPathToINI,pBuffer);
}
char* pFullPathToINI;
pFullPathToINI = lstrcat(pPathToINI,INIFILE);
В первом случае(когда работает) происходит инициализация pFullPathToINI адресом указателя pPathToINI.
Во втором - pFullPathToINI присваивается адрес указателя pPathToINI.
В MSDN по поводу lstrcat написано: If the function succeeds, the return value is a pointer to the buffer. Т.е. буфер на pPathToINI.
Можно конечно оставить первый вариант, ноя хочу разобраться, почему второй не работает.
Может кто-нибудь объяснить?
Вот так ругается компилятор:Links.cpp|29|error C2501: 'pFullPathToINI' : missing storage-class or type specifiers|
Links.cpp|29|error C2040: 'pFullPathToINI' : 'int' differs in levels of indirection from 'char *'|
Links.cpp|29|error C2440: 'initializing' : cannot convert from 'char *' to 'int'|
||=== Build finished: 3 errors, 0 warnings ===|