Se utilizzo esplicitamente le stringhe WCHAR nella mia applicazione Windows, dovrei usare le funzioni -W anziché il TCHAR #defines?

0

Fondamentalmente, TCHAR e le macro associate ( _T / TEXT ) sono davvero necessarie solo se hai come target sia ANSI che Unicode e, come il 99,9% degli sviluppatori, la possibilità che qualcuno possa stare usando Windows 95, 98 o Me non è davvero una mia preoccupazione. Io uso WCHAR , LP(C)WSTR , ecc. Nelle mie applicazioni.

Se utilizzo esplicitamente questi tipi, dovrei usare anche esplicitamente le funzioni associate?

Ad esempio:

 WCHAR wString[100];
 StringCchCopyW(wString, 100, L"Hello World");
 MessageBoxW(0, wString, L"", MB_OK | MB_ICONINFORMATION);

Al contrario di:

 WCHAR wString[100];
 StringCchCopy(wString, 100, _T("Hello World"));
 MessageBox(0, wString, _T(""), MB_OK | MB_ICONINFORMATION);

Non è molto probabile che un collega entri nel progetto e cambi l'impostazione del set di caratteri in "Usa set di caratteri Multi-Byte", e mentre il codice precedente è più esplicito in quello che sto facendo, quest'ultimo usa il nome "noto" della funzione; sono gli stessi nomi che ci si aspetta di vedere nella documentazione MSDN, e anche verbalmente, mi troverei a dire "string see-see-ech copy" piuttosto che "string see-see-ech copy double-you", anche se questa è la funzione che sto esplicitamente usando nel mio codice.

    
posta Govind Parmar 09.06.2017 - 19:10
fonte

1 risposta

2

Sono entrambi equivalenti. Se hai una base di codice estesa, dovresti seguire lo stesso stile del codice di progetto esistente. Ciò può semplificare la lettura, la ricerca, il codice copia / incolla e l'utilizzo di esempi da Microsoft. Puoi scegliere quello che vuoi per i nuovi progetti.

    
risposta data 09.06.2017 - 21:21
fonte

Leggi altre domande sui tag