所以我刚开始使用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,这就是我的想法。
答案 0 :(得分:0)
那是因为project1在项目级别定义for
(检查项目属性)。因此,在project2属性中定义_UNICODE
。
以下是: