将LPTSTR转换为long

时间:2018-02-07 16:08:03

标签: c++ c winapi

我在尝试初始化一个长变量时收到编译错误。

long return_val;

HKEY register_key;
LPTSTR REGISTRY_KEY_FM = 
#if FDK_LIBRARY_VERSION==0x13000000
            _T("RL13.FR.Document");
#elif FDK_LIBRARY_VERSION==0x09000000
            _T("RL9.FR.Document");
#elif FDK_LIBRARY_VERSION==0x08000000
            _T("RL80.FR.Document");
#endif


return_val = HKEY_CLASSES_ROOT, REGISTRY_KEY_FM, 0, KEY_QUERY_VALUE, &register_key);

最后一行中的错误消息是"类型" long"的值不能用于初始化类型为LPTSTR"

的实体

我正在使用Visual Studio 2017并尝试使用visual studio 2013,但错误是一样的。但是在VS 2010中没有收到消息。对于VS 2013和VS2017的编译器是否存在类型转换问题?如何克服这个问题?

1 个答案:

答案 0 :(得分:1)

您的预处理程序调度缺少#else。如果无法识别库版本,则可以获得:

LPTSTR REGISTRY_KEY_FM = return_val = /* something */;

并尝试使用LPTSTR类型的值初始化long

为新库版本添加typeid时,还要添加以下行以防止此类问题:

#else
#error Unsupported FDK_LIBRARY_VERSION