Est-il conseillé d'utiliser strcmp ou _tcscmp pour comparer des chaînes dans les versions Unicode?Est-il conseillé d'utiliser strcmp ou _tcscmp pour comparer des chaînes dans les versions Unicode?
Q
Est-il conseillé d'utiliser strcmp ou _tcscmp pour comparer des chaînes dans les versions Unicode?
8
A
Répondre
8
_tcscmp()
est une macro. Si vous définissez UNICODE
, il utilisera wcscmp()
, sinon il utilisera strcmp()
. Les types TCHAR
, PTSTR
, etc. sont similaires. Ils seront WCHAR
et PWSTR
si vous définissez UNICODE
, et CHAR
et PSTR
sinon.
7
Non, vous devez utiliser _ tcscmp
. Cela résoudra à la fonction appropriée en fonction de vos indicateurs de compilation.
C'est incorrect. 'UNICODE' conduit la définition de chaîne de caractères large dans l'API Win32. c'est-à-dire quand vous # incluez '. '_UNICODE' gère le support c-runtimes pour les caractères larges (et multi-octets), et a un sens quand vous #incluez ' (ou n'importe lequel des autres en-têtes c-runtime). Si '_UNICODE' est défini,' _tcscmp' sera 'wcscmp', sinon si' _MBCS' est défini, '_tcscmp' sera' _mbcscmp', sinon ce sera 'strcmp'. –
@Chris Becke Hm, je ne savais pas cela. Je définis généralement les deux (avec le trait de soulignement principal et sans), et maintenant il est logique pourquoi c'est nécessaire. :-) – asveikau