gpt4 book ai didi

c++ - 这是什么 : L"DLGCTRL_"L#dialog_control_id

转载 作者:搜寻专家 更新时间:2023-10-31 02:04:13 24 4
gpt4 key购买 nike

我在一些 C++_11 代码中发现了这个:

L"DLGCTRL_"L#dialog_control_id

这里的“L#”是什么?没有 # 运算符或连接。是的,"和 L 之间没有任何东西。这怎么允许?

我得到错误:

error C3688: invalid literal suffix 'L'; literal operator or literal operator template 'operator ""L' not found

我在 Windows 10 上安装了 Visual Studio 2015 和 2017。它在 C++98 或 00 上正常编译

最佳答案

我假设这发生在预处理器宏中,否则这个问题根本没有意义,例如:

#define X(dialog_control_id)  L"DLGCTRL_"L#dialog_control_id

X(foo) 扩展为 L"DLGCTRL_foo"


代码应该是:

#define X(dialog_control_id)  L"DLGCTRL_" #dialog_control_id

原代码有几个问题:

  • L# 在 ISO C++ 中是不允许的,它是 Microsoft 预处理器的扩展,用于生成宽字符串文字。
  • 在 C++11 预处理器中,紧跟在右引号之后的字母(中间没有空格)被标记为用户定义的字符串文字。
  • 最后的 L 无论如何都不是必需的,因为宽字符串文字可以与窄字符串文字连接(产生宽字符串文字)

关于c++ - 这是什么 : L"DLGCTRL_"L#dialog_control_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53860644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com