C ++基础知识(使用其他方法的相同代码(unicode?))

时间:2017-02-15 08:37:54

标签: c++ unicode

所以我刚开始使用C ++,所以我对它很新,我现在知道大部分基本的东西。然而,我偶然发现了从项目1复制到项目2的代码问题,它们现在是IDENTICAL,除了项目2包含“错误”......

那我为什么要开始使用C ++?工作要求我创建一个凭证提供商,你在互联网上找不到任何好的信息BTW ......

无论如何,我将代码复制到一个新项目但我有错误, 我复制了:

StringCchCopyN(pszDomain, lenDomain + 1, pchDomainBegin, lenDomain);

但是项目1正在使用:

STRSAFEAPI StringCchCopyNW(
        _Out_writes_(cchDest) _Always_(_Post_z_) STRSAFE_LPWSTR pszDest,
        _In_ size_t cchDest,
        _In_reads_or_z_(cchToCopy) STRSAFE_PCNZWCH pszSrc,
        _In_ size_t cchToCopy)

和项目2正在使用:

STRSAFEAPI StringCchCopyNA(
        _Out_writes_(cchDest) _Always_(_Post_z_) STRSAFE_LPSTR pszDest,
        _In_ size_t cchDest,
        _In_reads_or_z_(cchToCopy) STRSAFE_PCNZCH pszSrc,
        _In_ size_t cchToCopy)

那么为什么项目1使用NW功能和项目2使用NA功能,我做了一些小的研究:

#ifdef UNICODE
    #pragma region Application Family
    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
        #define StringCchCopyN  StringCchCopyNW
    #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
    #pragma endregion
#else
    #pragma region Desktop Family
    #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
        #define StringCchCopyN  StringCchCopyNA
    #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
    #pragma endregion
#endif // !UNICODE

然而我不知道为什么项目1使用UNICODE而项目2不是......就像我说过的那样,项目至少是IDENTICAL,这就是我的想法。

1 个答案:

答案 0 :(得分:0)

那是因为project1在项目级别定义for(检查项目属性)。因此,在project2属性中定义_UNICODE

以下是:

  1. 右键单击项目>特性
  2. 配置属性>一般
  3. 项目默认值>字符集
  4. 更改“使用多字节字符集”> “使用Unicode字符集”