【发布时间】:2020-12-14 08:41:17
【问题描述】:
现在我尝试将代码上的字符集从多字节更改为 unicode,但是当我编译此代码时出现错误,这是我的错误
error C2065: 'LtszCommConfigFile' : undeclared identifier
我不知道为什么会这样?,我已经声明了LtszCommConfigFile 标识符,但我仍然得到了那个错误
这是我的完整代码
CString CCommApiHelper::GetTerminalNum(LPCTSTR lpszCommonPath, BOOL bIsCyber)
{
TCHAR tszCommConfigFile[MAX_PATH] = {0, };
TCHAR tszTermNum[9] = {0, };
CString strTermNum;
_stprintf(tszCommConfigFile, L"%s\\CommInfo.ini", lpszCommonPath);
if ( GetPrivateProfileInt(L"TEST_INFO", L"IS_TERM_ID", 0, tszCommConfigFile) == 1 )
{
GetPrivateProfileString(L"TEST_INFO", L"TERM_ID", L"A0000000", tszTermNum, sizeof(tszTermNum), tszCommConfigFile);
strTermNum = tszTermNum;
return strTermNum;
}
int x1, x2, x3, x4;
x1 = GetPrivateProfileIntA("IP_INFO", "A_CLASS", 0, _T(tszCommConfigFile));
x2 = GetPrivateProfileIntA("IP_INFO", "B_CLASS", 0, _T(tszCommConfigFile));
x3 = GetPrivateProfileIntA("IP_INFO", "C_CLASS", 0, _T(tszCommConfigFile));
x4 = GetPrivateProfileIntA("IP_INFO", "D_CLASS", 0, _T(tszCommConfigFile));
if ( (x2 / 10) == 10 ) tszTermNum[1] += '1'; // 105 or 109
else if ( (x2 / 10) == 20 ) tszTermNum[1] += '2'; // 205 or 209
else tszTermNum[1] += '0';
_stprintf(&tszTermNum[2], L"%03d%03d", x3, x4);
strTermNum = tszTermNum;
return strTermNum;
}
谢谢
【问题讨论】:
-
发布完整的代码,以便至少您在错误中的标识符可以出现在代码本身中
-
您只能将
_T宏应用于字符串文字,而不是变量名。但问问自己,您是否真的想要/需要编译同一代码的同时编译 ANSI 和 Unicode 版本,否则完全放弃那些TCHAR和_T,并使用广泛的版本。 -
你的标题说你的变量以 L 开头,但它以 t 开头。我假设你的意思是 L"..."。
标签: c++ visual-studio visual-c++ mfc