【发布时间】:2020-10-27 11:30:47
【问题描述】:
我正在编写一个使用 SMTP 的小应用程序。
我遇到了一个奇怪的错误:
identifier "Luservar" is undefined`
代码:
o_smtp->BodyText = _T(uservar->get_h().c_str() + ":" + pass_str.c_str() + "\n" + get_mac().c_str());
如果我说uservar,为什么会说Luservar?
我试过了:
o_smtp->BodyText = uservar->get_h().c_str() + ":" + pass_str.c_str() + "\n" + get_mac().c_str();
然后我收到这样的错误:
expression must have integral or unscoped enum type
我对 C++ 还很陌生,也许它是错误的字符串合并方式?
【问题讨论】:
-
请发布您的编译器命令行选项。
-
c_str()通常返回const char*- 你不能使用+将它们与其他const char*"字符串" 合并 -
@Dai 如何在 Visual Studio 中查看?
-
_T只能应用于"literals"- 将其应用于任意表达式是行不通的 -
无论如何你都不应该使用
_T。现在是 2020 年 - 到处使用 UTF-8! (或者至少在您的 Win32 代码中始终使用wchar_t和 UTF-16)。_T允许您重新编译我们在 1990 年代后期拥有的(过时的、可怕的、不明智的和恶魔般的)MBCS 与 ANSI 与“Unicode”世界。今天用它是完全错误的。
标签: c++