C에서 main() 함수는 프로그램의 진입점 역할을 하며 다음 중 하나를 허용합니다. 두 가지 서명 중:
int main(); int main(int argc, char* argv[]);
또는 Microsoft는 유니코드를 수용하는 확장 기능을 도입했습니다. 지원:
int wmain(int argc, wchar_t* argv[]); int _tmain(int argc, char *argv[]);
_tmain()과 main()의 주요 차이점은 유니코드 사용에 있습니다. 유니코드가 활성화된 경우 _tmain()은 wmain()으로 컴파일되어 wchar_t 문자열을 처리할 수 있습니다. 그렇지 않은 경우 기본값은 main()입니다.
예제에서 char* 인수와 함께 _tmain()을 사용하면 문자가 다르게 해석되므로 예기치 않은 동작이 발생합니다. 유니코드가 활성화된 경우 Windows에서 사용되는 UTF-16은 ASCII 문자를 바이트 쌍으로 나타내며, ASCII 값 뒤에 널 바이트가 옵니다.
x86 CPU의 리틀 엔디안 특성으로 인해 이러한 바이트가 교환되어 ASCII 값 뒤에 0이 붙습니다(널 바이트). char 문자열은 일반적으로 null 바이트로 끝나기 때문에 프로그램은 각 인수를 단일 문자 문자열로 해석합니다.
이 문제를 해결하려면 다음 세 가지 옵션이 있습니다.
이러한 확장 및 개념은 Microsoft에만 해당되며 표준 C의 일부는 아닙니다.
위 내용은 유니코드 처리를 위한 C의 `_tmain()`과 `main()`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!