IT 공부/Windows 개발4 [Windows] - 콘솔 앱과 GUI 앱을 더블클릭하면 과연 어떤 차이가? #1. 콘솔 앱이 갑자기 뜨고 갑자기 사라지는 이유 ▷ Visual Studio에서 C/C++ 파일을 빌드하면 실행 파일(exe)이 생성된다. Visual Studio에서 Ctrl+F5로 실행할 수도 있지만, 빌드 디렉터리에 직접 찾아가 생성된 exe 파일을 더블클릭해도 된다. 하지만 콘솔 애플리케이션일 경우, 갑작스럽게 콘솔 창이 뜨고 사라지는 모습만 휑하니 보게 된다... ▷ 콘솔 창을 열고 거기서 직접 exe를 실행해야만 콘솔 창이 사라지지 않고 아래처럼 정상 실행되는 모습을 볼 수 있다. ▷ 그러나 GUI로 빌드한 Windows 애플리케이션은 더블클릭하면 콘솔이 열리고 닫히는 것이 아니라 처음부터 윈도우 창이 생성되어 실행된다. 마치 Windows가 똑같은 exe 파일인데도 무엇이 콘솔이고 무엇.. 2025. 1. 1. [Windows] - 윈도우즈 시스템 프로그래밍에 대해 가졌던 오해 ▷ 윈도우즈 시스템 프로그래밍이란 쉽게 말해, Windows가 제공해주는 C/C++ Windows API 라이브러리를 사용해 Windows에서 동작하는 소프트웨어를 만드는 것을 말한다. 대부분의 API를 windows.h 파일에 찾을 수 있다. ▷ 처음에 나는 이걸 착각해서, Windows API를 사용해 GUI를 만드는 것을 시스템 프로그래밍이라고 오해했다. 틀린 말은 아니지만, 시스템 프로그래밍은 GUI 뿐만 아니라 Windows 시스템 전반의 기능을 활용할 수 있는 프로그래밍이다. 따라서 콘솔 환경에서만 동작하는 Windows 시스템 프로그램도 가능하다. ▷ 이렇게 말하면 C/C++ 표준 라이브러리를 놔두고 왜 굳이 또 Windows API를 사용해야 하는지 의문이 들 수 있다. 그러나 C/C++ .. 2024. 12. 22. [Windows] - char과 wchar_t의 차이점 (MBCS와 유니코드) #. 일반 문자열과 L유니코드 문자열의 차이 ▷ 우선, 소스코드 자체는 UTF-8로 인코딩되었고, VC 컴파일러 옵션에도 소스코드가 UTF-8로 인코딩되었다고 설정했다. (설정 방법은 여기 링크) ▷ 실제로 소스코드 텍스트 파일 자체의 바이너리 값을 보면 문자열도 UTF-8로 인코딩되어 있다는 것을 알 수 있다. ▷ 그러나 이건 어디까지나 텍스트 파일에 불과한 소스코드를 VC++ 컴파일러가 디코딩하는 차원의 문제이므로, 중요한 것은 빌드되고 난 뒤에 프로그램 내부에 문자열이 어떻게 인코딩되었는지 살펴보는 일이다. ▷ 빌드를 하고 난 뒤 윈도우 실행 파일(PE)의 내부 바이너리 데이터다. 문자열이 UTF-8이 아니라는 것을 쉽게 알 수 있다. 먼저, "hello한글"은 Windows의 로컬 환경인 C.. 2024. 12. 21. [Windows] - 인코딩 환경이 난잡한 이유 (Unicode, MBCS, ...) # MBCS(CP949) ▷ MBCS는 멀티 바이트 캐릭터 세트의 약자다. MBCS는 유니코드가 아니다!!. 문자를 인코딩할 때 다양한 크기의 바이트로 저장한다는 점에서 UTF-8과 유사해 오해하기 쉽다. 그러나 MBCS는 유니코드 개발 이전에 문자 인코딩이 유니코드로 글로벌하게 표준화되기 전에 존재했던 과도기 기술이다. ▷ ASCII 코드가 1바이트만을 사용해서 영어 알파벳과 기타 문자를 표시하던 시절, 일본이나 한국과 같은 지역에서는 아스키코드를 포함하여 자신들의 문자열을 표현할 수 있는 인코딩을 개발했다. 아스키코드가 당시 컴퓨터의 실질적 표준이었기 때문에 1바이트로 표현하는 아스키 방식과 호환시키면서 자국의 언어도 표현하려도 보니 "멀티 바이트"로 저장하는 시스템이 되었고, MBCS라는 단어가 붙.. 2024. 12. 21. 이전 1 다음