Um programa de texto genérico de exemplo
Microsoft específicos
O seguinte programa GENTEXT.C, fornece uma ilustração mais detalhada do uso de texto genérica mapeamentos definidos no TCHAR.H:
// GENTEXT.C
// use of generic-text mappings defined in TCHAR.H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <direct.h>
#include <errno.h>
#include <tchar.h>
int __cdecl _tmain(int argc, _TCHAR **argv, _TCHAR **envp)
{
_TCHAR buff[_MAX_PATH];
_TCHAR *str = _T("Astring");
char *amsg = "Reversed";
wchar_t *wmsg = L"Is";
#ifdef _UNICODE
printf("Unicode version\n");
#else /* _UNICODE */
#ifdef _MBCS
printf("MBCS version\n");
#else
printf("SBCS version\n");
#endif
#endif /* _UNICODE */
if (_tgetcwd(buff, _MAX_PATH) == NULL)
printf("Can't Get Current Directory - errno=%d\n", errno);
else
_tprintf(_T("Current Directory is '%s'\n"), buff);
_tprintf(_T("'%s' %hs %ls:\n"), str, amsg, wmsg);
_tprintf(_T("'%s'\n"), _tcsrev(str));
return 0;
}
If _MBCS tiver sido definido, GENTEXT.C mapeia para o seguinte programa MBCS:
// crt_mbcsgtxt.c
/*
* Use of generic-text mappings defined in TCHAR.H
* Generic-Text-Mapping example program
* MBCS version of GENTEXT.C
*/
#include <stdlib.h>
#include <mbstring.h>
#include <direct.h>
int __cdecl main(int argc, char **argv, char **envp)
{
char buff[_MAX_PATH];
char *str = "Astring";
char *amsg = "Reversed";
wchar_t *wmsg = L"Is";
printf("MBCS version\n");
if (_getcwd(buff, _MAX_PATH) == NULL) {
printf("Can't Get Current Directory - errno=%d\n", errno);
}
else {
printf("Current Directory is '%s'\n", buff);
}
printf("'%s' %hs %ls:\n", str, amsg, wmsg);
printf("'%s'\n", _mbsrev(str));
return 0;
}
If _UNICODE tiver sido definido, GENTEXT.C mapeia para a seguinte versão Unicode do programa. Para obter mais informações sobre sistema autônomo usar wmain em programas Unicode sistema autônomo um substituto para main, consulte Usando wmain in Referência de linguagem c.
// crt_unicgtxt.c
/*
* Use of generic-text mappings defined in TCHAR.H
* Generic-Text-Mapping example program
* Unicode version of GENTEXT.C
*/
#include <stdlib.h>
#include <string.h>
#include <direct.h>
int __cdecl wmain(int argc, wchar_t **argv, wchar_t **envp)
{
wchar_t buff[_MAX_PATH];
wchar_t *str = L"Astring";
char *amsg = "Reversed";
wchar_t *wmsg = L"Is";
printf("Unicode version\n");
if (_wgetcwd(buff, _MAX_PATH) == NULL) {
printf("Can't Get Current Directory - errno=%d\n", errno);
}
else {
wprintf(L"Current Directory is '%s'\n", buff);
}
wprintf(L"'%s' %hs %ls:\n", str, amsg, wmsg);
wprintf(L"'%s'\n", wcsrev(str));
return 0;
}
Se nenhuma das _MBCS nem _UNICODE tiver sido definido, GENTEXT.C mapeiam para código ASCII de byte único, da seguinte forma:
// crt_sbcsgtxt.c
/*
* Use of generic-text mappings defined in TCHAR.H
* Generic-Text-Mapping example program
* Single-byte (SBCS) Ascii version of GENTEXT.C
*/
#include <stdlib.h>
#include <string.h>
#include <direct.h>
int __cdecl main(int argc, char **argv, char **envp)
{
char buff[_MAX_PATH];
char *str = "Astring";
char *amsg = "Reversed";
wchar_t *wmsg = L"Is";
printf("SBCS version\n");
if (_getcwd(buff, _MAX_PATH) == NULL) {
printf("Can't Get Current Directory - errno=%d\n", errno);
}
else {
printf("Current Directory is '%s'\n", buff);
}
printf("'%s' %hs %ls:\n", str, amsg, wmsg);
printf("'%s'\n", strrev(str));
return 0;
}
participante Microsoft específicos