【问题标题】:: error C2065: 'Lcurrent' : undeclared identifier: 错误 C2065: 'Lcurrent' : 未声明的标识符
【发布时间】:2011-12-22 19:46:32
【问题描述】:

我想创建一个接受随机变量的程序,然后将其输出到屏幕上(windows 格式,而不是控制台。)但是当我将变量放入代码中时,就会发生这种情况

:错误 C2065:“Lcurrent”:未声明的标识符

当我将变量更改为 Lcurrent 时,它会说 : 错误 C2065: 'LLcurrent' : 未声明的标识符

我怎样才能让它接受一个变量来创建一个窗口? 这是上下文:

    while (counter < 44){
      current[1] = characters[counter];
      counter ++;
      CreateWindow(TEXT("STATIC"), TEXT(current[1]),
        WS_VISIBLE | WS_CHILD,
        0, 0, 50, 50,
        hwnd, (HMENU) NULL, NULL, NULL);
    }

头文件是:

windows.h

字符串

时间.h

【问题讨论】:

  • current 变量声明在你的代码中的任何地方?

标签: c++ visual-studio


【解决方案1】:

TEXT 只能应用于字符串文字。 current[1] 必须是 TCHAR*/const TCHAR* 类型(或 TCHAR[]/const TCHAR[])。

【讨论】:

    【解决方案2】:

    TEXT 宏将 L 添加到参数中;它只能用于将 ANSI 字符串文字 "..." 转换为 Unicode 字符串文字 L"..."

    由于您的 current 字符串似乎是 ANSI,请使用 CreateWindowA

     CreateWindowA("STATIC", current[1],
        WS_VISIBLE | WS_CHILD,
        0, 0, 50, 50,
        hwnd, (HMENU) NULL, NULL, NULL);
    

    (如果是 wchar_t 字符串,使用 CreateWindowW 和 L"STATIC";如果是 TCHAR 字符串,使用 CreateWindow 和 current[1] 和 TEXT("STATIC")

    【讨论】:

    • ANSI 是微软特有的误称。它通常指的是 Windows-1252 8 位字符编码,美国国家标准协会从未对其进行标准化(尽管它类似于 ISO 8859-1,也称为 Latin-1)。 "..."L"..." 之间的真正区别在于它们分别引用 charwchar_t 的数组。在 Windows 中,char 是 8 位,wchar_t 是 16 位,通常用于保存 UTF-16 或 UCS-2 编码字符串(还有许多其他表示 Unicode 文本的方式)。例如,在 Linux 上,wchar_t 是典型的 32 位。
    • 当然,你是对的。但是,当应用于 WinAPI 和 UNICODE 定义时,ANSI 是我能找到的最接近的术语,可以简洁地描述发生的情况。
    • 如果我尝试进行您的更改,那么它会吐出一个新错误。 : 错误 C2664: 'CreateWindowExA' : 无法将参数 3 从 'char' 转换为 'LPCSTR'
    • 因为我不知道你想做什么,所以我帮不了你。 current[1] 是一个字符;你必须传递一个字符串。您可以传递电流或电流 + 1(与 &current[1] 相同),或者您可能需要传递其他内容 - 毕竟这取决于您希望代码执行的操作。
    • 我有一个字符数组,我想从数组中吐出,这是我的做法。如果你有更好的方法,说出来。
    猜你喜欢
    • 2011-02-15
    • 2011-04-16
    • 2011-04-16
    • 2010-12-24
    • 2023-03-04
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多