분류 전체보기 290

헝가리안 표기법

24.10.29. 업데이트- 헝가리안 표기법은 과거 C, C++ 에서 사용되던 변수명명법인데, 최근엔 사용하지 않는 추세입니다.- IDE가 발전하기 전, Notepad++ 등을 사용해 개발하던 때에 변수명만 봐도 타입을 바로 알 수 있게 하기 위한 목적의 표기법입니다.- 요즘은 IDE가 발전해서 변수의 타입을 쉽게 알 수 있고, JAVA, Javascript, Python 등 타입을 고려하지 않아도 되는 언어들도 많이 나와있기 때문에 사라지는 추세입니다.- 헝가리안 표기법 같이 접두어가 많이 붙는 경우에는 오히려 변수명의 가독성을 떨어뜨리는 단점, 휴먼에러가 발생할 수 있다는 단점 등등이 있습니다. 공통사항접두어데이터 타입bbyte, booleannint, shortiint, short (주로 인덱스로 ..

멀티스레드 (스레드함수)

멀티스레드, 동시에 실행되는 함수로 사실은 병렬처리되는게 아니라 멀티태스킹 스타일로 선형적(직렬) 처리가 됩니다.그런데 사람이 인지할 수 없을 정도의 직렬처리라 그냥 병렬처리되는것 처럼 보일 뿐입니다. TCP 서버/클라이언트에서도 문제점이 있는데, 스레드를 사용하지 않으면 두개의 클라이언트가 서버에 접속 할 경우 늦게 접속한 클라이언트는 메시지가 표시되지 않을 수 있다.멀티스레드를 이용하면 이런 문제를 해결할 수 있다.  1. 스레드 생성 - 윈도우에서 스레드를 생성하려면 CreateThread() 함수를 사용해야 합니다. - CreateThread() 함수는 스레드를 생성한 후 스레드 핸들을 리턴합니다, 스레드 핸들은 파일 디스크립터나 소켓 디스크립터와 비슷한 개념으로 스레드 관련 데이터 구조체를 간접..

static을 이해합시다

용어부터 살펴보아요 static : 정적인, 움직이지 않는 static의 특징 - 한번 생겨나면 프로그램이 종료될 때까지 소멸되지 않는다, 객체 소멸시점이 일정하다. - 내부 연결성 : 전역 static 객체나 함수는 외부 링크단계에서 바인딩이 발생하지 않는다.    그러니까, 컴파일 할 때 링크단계에서 외부 라이브러리가 static객체를 참조할 수 없다. - 어떤 모듈 단위라도 static 변수는 단 한번만 생성 바인딩(binding) - static을 이해하려면 필요한 개념 - extern을 통해 두 파일의 변수를 공유하는 작업을 바인딩이라고 한다 간단한 예를 살펴보겠습니다 @ header.hint global; @ a.cppint main(){   global = 3;} @ b.cppint main..

Cast - reinterpret_cast, static_cast, const_cast, dynamic_cast

캐스트 : 형변환 C++스타일의 캐스트는 reinterpret_cast, static_cast, const_cast, dynamic_cast 등이 있다.   쉽게 말해 C 스타일의 캐스트는 식별자를 그냥 괄호로 둘러 싼 그것 float a = 1.23; int b = (int)a; 이게 바로 C스타일의 캐스트, 즉 형변환 이렇게 써놓으면 눈으로 찾기도 힘들고 내부적으로도 코드가 더러워지는 등 불편함이 있다고 합니다.   그런데 C++스타일의 캐스트는 static_cast(표현식) 이런식으로 작성됩니다.   예를들면, int형을 double형인것 처럼 결과를 내고싶다면 C스타일로는 int a, b; double result = ((double) a) / b; 요런식이겠지요   그런데 C++스타일의 캐스트를..

LPCTSTR, TCHAR, char

LPSTR = char* (롱포인터) LPCSTR = const char* (롱포인터콘스트)   이게 전부입니다.   TCHAR 영문권이 아닌 우리나라같은 경우에는 문자를 표현하기 위해 2바이트가 사용됩니다. 어떤건 1바이트로 처리되기도 하고 어떤건 2바이트로 처리되기도 하는데 이게 헷갈려서 wchar라는걸 만들었습니다. wchar는 모든 문자를 2바이트로 처리합니다   이 TCHAR는 wchar던 char던 신경안쓰고 걍 코딩하면 됩니다. 아스키 타입의 char라는 뜻   LPCTSTR 아스키 타입의 롱포인터 콘스트 캐릭터 ㅇㅋ?    LPCTSTR -> const char* 형변환 오류 프로젝트 속성 - 구성 속성 - 문자집합 - 유니코드로 되어있는 것을 멀티바이트 형으로 변경