2
Недавно я сделал утилиты функционировать как:Любой побочный эффект не используется USES_CONVERSION
// T2CA
#include "ATLCONV.H"
std::string Utils::CString2String(const CString& cString)
{
#if _MSC_VER > 1200
// Convert a TCHAR string to a LPCSTR
// construct a std::string using the LPCSTR input
CT2CA tmp(cString);
std::string strStd (tmp);
#else
// Deprecated in VC2008.
// construct a std::string using the LPCSTR input
std::string strStd (T2CA (cString));
#endif
return strStd;
}
Я сделал несколько простых тестов, и это, кажется, работает хорошо. Однако, когда я искать в Интернете, я могу видеть, что большинство Обычаи T2CA в VC6 есть предыдущий вызов
USES_CONVERSION;
Есть ли что-нибудь, что я пропустил? Должен ли я вызвать свою функцию:
#else
// Deprecated in VC2008.
// construct a std::string using the LPCSTR input
USES_CONVERSION;
std::string strStd (T2CA (cString));
#endif
Но почему я не получал ошибку компиляции при использовании T2CA? Обратите внимание, что T2CA вызывается с кодовым блоком VC6 (#if _MSC_VER <= 1200) –
Вышеприведенный код может быть скомпилирован как в VC2008, так и в VC6. –
@Yan: Я не уверен, но я помню, прежде чем делать разработку, и если бы я не сказал, я бы получил компиляцию ошибок. И я знаю, что это больше не требуется. Я думаю, можно с уверенностью сказать, что вы можете безопасно использовать код без него, если он компилируется. –