>백엔드 개발 >C++ >명령줄 인수와 관련하여 C의 `main()`과 `_tmain()`의 차이점은 무엇입니까?

명령줄 인수와 관련하여 C의 `main()`과 `_tmain()`의 차이점은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-17 19:10:13469검색

What's the Difference Between `main()` and `_tmain()` in C   Regarding Command-Line Arguments?

C에서 _tmain()과 main()의 차이점은 무엇입니까?

C를 사용할 때 프로그램에 main() 또는 _tmain()을 사용할 수 있습니다. 기입. 둘 다 비슷한 목적을 수행하지만 인수 처리 방식을 바꾸는 중요한 차이점이 있습니다.

main() 이해

C 표준에 따르면 main은 프로그램의 지정된 진입점입니다. 이는 두 가지 서명 중 하나를 준수합니다:

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

여기서 argc는 명령줄 인수의 수를 나타내고 argv는 인수를 포함하는 문자 배열의 배열입니다.

_tmain( )

_tmain은 유니코드 간의 전환을 단순화하는 Microsoft 전용 확장입니다. (UTF-16) 및 멀티바이트 문자 세트. 유니코드가 활성화되면 _tmain은 wmain으로 컴파일되고 그렇지 않으면 main으로 컴파일됩니다.

인수 불일치 발견

이 문제는 _tmain 함수가 제대로 정의되지 않았기 때문에 발생합니다. Wmain은 char 인수가 아닌 wchar_t 인수를 허용하도록 설계되었습니다. 컴파일러는 main에 대해 이 규칙을 적용하지 않으므로 wchar_t 문자열 배열이 main 함수에 전달되어 이를 char 문자열로 해석합니다.

UTF-16, 유니코드가 활성화된 Windows에서 사용되는 문자 집합 , ASCII 문자를 바이트 쌍으로 나타냅니다. 그 뒤에 ASCII 값이 옵니다. 그러나 little-endian 바이트 순서를 사용하는 x86 CPU에서는 순서가 반대입니다. 이는 char 문자열에서 문자열이 null 바이트로 끝나 프로그램이 단일 바이트 문자열을 식별하도록 유도한다는 의미입니다.

프로그램 옵션 탐색

Windows 프로그래밍을 시작할 때 직면하게 되는 문제는 다음과 같습니다. 여러 가지 선택:

  • 명시적 유니코드: wmain 사용, CreateWindowW, wchar_t 등
  • 유니코드 명시적 비활성화: main, CreateWindowA 및 char 사용
  • 둘 다 허용: _tmain, CreateWindow, TCHAR(다음에 정의된 매크로 windows.h).

결론

_tmain 및 기본 주소 프로그램 항목은 C에 있지만 _tmain은 유니코드를 처리하는 Microsoft 확장입니다. 인수를 처리할 때 _tmain에는 wchar_t가 필요하고 main은 char로 작동합니다. C 애플리케이션을 원활하게 실행하려면 이러한 차이점을 이해하는 것이 중요합니다.

위 내용은 명령줄 인수와 관련하여 C의 `main()`과 `_tmain()`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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