2017-02-15 15 views
1

所以我剛開始使用C++,所以我對它很陌生,現在我知道大部分基本的東西。然而,我已經無意中發現了我從項目1複製到項目2的代碼的問題,他們現在是IDENTICAL,除了項目2包含「錯誤」...C++基礎知識(使用其他方法的相同代碼(unicode?))

那麼,爲什麼我要啓動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

這是因爲project1有_UNICODE在項目級定義(檢查項目屬性)。因此,在project2屬性中定義_UNICODE

方法如下:

  1. 右鍵單擊項目>屬性
  2. 配置屬性>常規
  3. 項目默認設置>字符集
  4. 更改 「使用多字節字符集」>「使用Unicode字符設置「