不使用USES_CONVERSION的任何副作用

时间:2010-06-08 03:20:57

标签: c++ visual-c++

最近我做了一个实用程序功能,如:

// 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;
}

我做了几个简单的测试,似乎工作正常。但是,当我在网上搜索时,我可以看到VC6中T2CA的大多数用法都有前面的

调用
USES_CONVERSION;

有什么我错过的吗?我应该通过以下方式调用我的功能:

#else
    // Deprecated in VC2008.
    // construct a std::string using the LPCSTR input
    USES_CONVERSION;
    std::string strStd (T2CA (cString));
#endif

1 个答案:

答案 0 :(得分:2)

在ATL 7.0中不再需要USES_CONVERSION。在此之前,您需要指定USES_CONVERSION宏,否则您将遇到编译错误。