代码之家  ›  专栏  ›  技术社区  ›  Alireza Amini

GCC警告将字符串常量转换为“TCHAR*”的原因是什么?

  •  0
  • Alireza Amini  · 技术社区  · 10 月前

    我最近开始从Charles Petzold编写C Windows API程序,我们必须在某个地方编写一个包含许多类似行的标题,如下所示:

    SM_CXSCREEN,            TEXT ("SM_CXSCREEN"), 
                                TEXT ("Screen width in pixels"),
    

    在程序中使用此标头后,GCC会这样警告我:

    ISO C++禁止将字符串常量转换为'TCHAR*'{aka'char*'}[-Wwrite strings]gcc

    我希望更多地了解这个具体的警告。

    1 回复  |  直到 10 月前
        1
  •  2
  •   0___________    10 月前

    错误 “ISO C++禁止将字符串常量转换为 TCHAR* 又称作 char* }" 发生的原因是在C++中,字符串文字像 "example" 类型 const char[] (或 const wchar_t[] 对于宽字符文字,如 L"example" ). 但是,您正试图将它们分配或传递给非const指针类型,如 察尔* (或 char* ).

    这是危险的,因为修改字符串文字是未定义的行为,因此发出警告