>백엔드 개발 >C++ >C Windows 프로그래밍에서 `main()`과 `_tmain()`의 차이점은 무엇입니까?

C Windows 프로그래밍에서 `main()`과 `_tmain()`의 차이점은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-17 15:55:10415검색

What's the Difference Between `main()` and `_tmain()` in C   Windows Programming?

C에서 _tmain()과 main()의 차이점

C에서 표준 프로그램 진입점은 main()입니다. 다음 서명 중 하나:

int main();
int main(int argc, char* argv[]);

그러나 Microsoft는 다음과 같은 확장 기능을 도입했습니다. 두 번째 서명을 다음으로 대체하는 wmain():

int wmain(int argc, wchar_t* argv[]);

유니코드(UTF-16)와 멀티바이트 문자 집합 간의 전환을 쉽게 하기 위해 Microsoft는 유니코드가 활성화되면 _tmain()도 정의했습니다. wmain으로 컴파일되고 그렇지 않으면 main()으로 컴파일됩니다.

문자 간 차이 처리

예제에서 main()과 _tmain() 사이의 차이는 main()을 잘못 사용하여 발생합니다. wmain()은 wchar_t 인수를 허용하도록 설계되었지만 main()은 char을 기대합니다. 컴파일러는 main()에 대한 올바른 유형을 적용하는 데 느슨하기 때문에 프로그램은 wchar_t 문자열 배열을 char 문자열로 해석합니다.

UTF-16에서 ASCII 문자는 다음과 같은 바이트 쌍으로 표시됩니다. ASCII 값 뒤에 널 바이트가 옵니다. x86 CPU는 리틀 엔디안이므로 이러한 바이트가 교환됩니다. 따라서 null로 끝나는 char 문자열에서 프로그램은 각각 1바이트 길이의 일련의 문자열을 보게 됩니다.

Windows 프로그래밍 옵션

Windows 프로그래밍 작업에서는 세 가지 주요 옵션을 사용할 수 있습니다.

  • wmain()을 호출하여 유니코드를 명시적으로 활성화합니다. Windows API 함수의 -W 변형, char 대신 wchar_t 사용.
  • main() 호출, Windows API 함수의 -A 변형 사용, 문자열에 char 사용을 통해 유니코드를 명시적으로 비활성화합니다.
  • _tmain()을 호출하고, Windows API 함수의 접미사가 없는 변형을 사용하고, 대신 TCHAR를 사용하여 두 가지를 모두 허용합니다. char/wchar_t.

이러한 Microsoft 전용 확장은 C 표준을 따르지 않으므로 다른 플랫폼에서는 지원되지 않을 수 있다는 점에 유의하는 것이 중요합니다.

위 내용은 C Windows 프로그래밍에서 `main()`과 `_tmain()`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.