我在尝试初始化一个长变量时收到编译错误。
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, ®ister_key);
最后一行中的错误消息是"类型" long"的值不能用于初始化类型为LPTSTR"
的实体我正在使用Visual Studio 2017并尝试使用visual studio 2013,但错误是一样的。但是在VS 2010中没有收到消息。对于VS 2013和VS2017的编译器是否存在类型转换问题?如何克服这个问题?
答案 0 :(得分:1)
您的预处理程序调度缺少#else
。如果无法识别库版本,则可以获得:
LPTSTR REGISTRY_KEY_FM = return_val = /* something */;
并尝试使用LPTSTR
类型的值初始化long
。
为新库版本添加typeid时,还要添加以下行以防止此类问题:
#else
#error Unsupported FDK_LIBRARY_VERSION