개요assert는 버그의 발생을 빠르고 쉽게 파악하기 위해 사용하는 매크로다. 이름에서 알 수 있듯 어떤 것을 단언하고 디버깅 중 참 거짓 검사를 통해 단언한 조건문이 거짓이 되면 에러 메세지를 띄우며 프로그램을 종료한다.assert 매크로는 릴리즈모드에서는 컴파일이 되지 않기 때문에 많이 써도 성능에 크게 영향을 주지 않는다. 현명하게 사용하면 버그없는(굉장히 적은) 프로그램을 만들 수 있겠다. 사용 방법assert를 사용하려면 다음 헤더를 추가해 주어야 한다. C : C++ : assert를 사용할 때 주의해야 할 점은 단언할 조건을 작성해야 한다는 것이다. 일반적인 논리에 따르면 참 일때 동작하는 코드들이 많지만 assert는 거짓일 때 동작하기 때문에 일어나면 안되는 조건이 아니라 꼭 일어나야 하..
프로그램이 수행해야 할 일서버클라이언트로부터 메세지를 수신해서 다른 클라이언트들에게 뿌려주는 단순한 echo 기능을 수행한다.클라이언트콘솔 화면에서 메세지를 입력받아서 서버로 송신하며, 동시에 서버에서 수신받은 메세지를 화면에 출력한다. 서버리눅스에도 있는 select를 사용해서 각 소켓의 메세지를 수신하고 송신할 수 있지만 winsock에서는 더 사용하기 편하고 강력한 기능을 제공하는 WSAEventSelect를 사용하기로 한다. 클라이언트서버에서 WSAEventSelect를 사용하여 멀티플렉싱을 구현하였기 때문에 클라이언트에서도 해당 함수를 사용해서 stdin과 소켓의 멀티플렉싱을 구현하려 했으나 windows는 socket과 file을 다르게 관리하기 때문에 위 함수를 사용할 수 없었다.아래는 멀티..
서버가 여러 클라이언트를 처리하기 위한 방법 중 입출력 다중화를 사용하는 방법을 알아보자.입출력 다중화란 여러 입출력 대상이 있을 때 그 대상들을 검사하며 입출력이 필요할 때마다 작업을 수행하는 것을 말한다. 이 방법은 멀티 프로세싱, 멀티 스레딩 방법과 다르게 싱글 프로세스, 싱글 스레드에서도 동작한다. 하지만 완전히 동시에 처리하지는 못하는 단점을 가지고 있다. select() 함수리눅스는 select() 함수로 입출력 다중화를 구현할 수 있다. select()는 지정한 범위의 file discripter중 FD_SET으로 1로 set되어있는 파일을 순회하면서 변화가 있는 file discripter를 반환한다.파일에 변화가 있다면 그대로 1로 두고, 변화가 없다면 0으로 set멀티 플랙싱이 가능하게..
어떤 프로그래밍 책에서 #pragma instrinsic 명령으로 math.h 내에 있는 함수들의 속도를 향상시킬 수 있다는 내용을 읽었다 책에서는 그냥 instrinsic을 사용하면 속도가 향상된다고 쓰여 있었고 삼각함수를 빨리 구하기 위해 삼각함수 table을 사용하는 방법도 intrinsic(cos, sin, tan)을 하면 소용이 없다 라는 뉘앙스의 설명이 있었다 #pragma intrinsic이 대체 뭐길래 이런 마법같은 일을 하는 것일까 #pragma 명령 전저리기 명령. 사전에 컴파일러에게 명령을 내릴 수 있다. #pragma intrinsic 사용법 #pragma intrinsic(func1, func2, ...) 설명 인자 목록에 들어있는 함수를 컴파일러가 판단한 후 inline 또는 f..
// normal readFILE *f = fopen("file.bmp", "rb");unsigned char info[54];fread(info, sizeof(unsigned char), 54, f); int width = *(int*)&info[18];int height = *(int*)&info[22]; int size = 3*width*height; // for RGBunsigned char *data = new unsigned char[size];fread(data, sizeof(unsigned char), size, f);fclose(f); // bmp를 저장할 때 RGB가 아닌 BGR순으로 저장하기 때문for(int i=0; i int width = *(int*)&info[18];int he..
- Total
- Today
- Yesterday
- DesignPattern
- 알고리즘
- JSP
- OS
- rxswift
- SOCKET
- winsock
- C
- ios
- 데이터베이스
- C++
- database
- Spring
- 자료구조
- Java
- 운영체제
- SHADER
- ue4
- 드라마
- Cocos2d-x
- mongoDB
- Git
- game
- 수학
- 국내여행
- SwiftUI
- scala
- swift
- C/C++
- machine learing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |