본문 바로가기

C/C++

[C/C++] Effective C++ 항목 18 : 인터페이스 설계는 제대로 쓰기엔 쉽게, 엉터리로 쓰기엔 어렵게 하자 1. 좋은 인터페이스가 되도록 항상 연구하자 2. 인터페이스의 올바른 사용을 이끄는 방법 - 인터페이스 사이의 일관성 잡아주기 : 여러 언어에서 size(), length(), count()등은 크기를 의미하는데 이런 의미의 일관성을 말함. - 기본제공 타입과의 동작 호환성 유지하기 : 사용자 정의 타입(struct, class)을 int형을 이용해 만들었다면 사용자 정의 타입도 int형 처럼 똑같이 쓸 수 있게 하자. 3. 사용자 실수 방지법 - 새로운 타입 만들기 : 사용자 정의 타입을 만들어 잘못된 값이 들어가지 않게 방지 - 타입에 대한 연산을 제한하기 : const를 붙여 함수 인자에 연산을 못하도록 한다. ==>.. 더보기
[C/C++] 문자열 16진수로 변환 strtol 함수를 이용하면 된다. int main(void) { char abc[] = "#ff9911"; char a[2]; char b[2]; char c[2]; strncpy(a, abc + 1, 2); strncpy(b, abc + 3, 2); strncpy(c, abc + 5, 2); long a1 = strtol(a, NULL, 16); long b1 = strtol(b, NULL, 16); long c1 = strtol(c, NULL, 16); return 0; } 더보기
[Socket]Unix Socket 프로그래밍 방법들 어디서 찾은건지 정확히는 모르겠지만 Unix에서 Socket 프로그램을 만들때 다양한 방법을 정리한 자료이다. 보기 쉽게 되어 있다고는 말할수 없지만 Unix를 많이 경험해 보지 못한 나로서는 많은 도움이 되었다. 더보기
[기본]변수 키워드 - volatile 키워드 cache 를 사용하지 않겠다. H/W에 있는 값을 즉각 즉각 읽어 와야 하는 경우에 사용합니다. 보통의 경우 cache을 통해서 값을 읽어 오는데 cache를 통할경우 cache에 있는 값은 최신 데이터가 아닐수 있기 때문에 이런 경우를 방지하고자 할때 사용합니다. 최적화를 사용하지 않겠다. for(int i = 0 ; i < 10 ; i++ ); 이런 구문을 delay를 주기위한 목적으로 사용했다면 컴파일러가 최적화 과정에서 불필요한 코드라고 판단하고 생략하는 경우가 있습니다. 이런 경우 volatile 키워드를 사용하면 방지할 수 있습니다. for(volatile int i = 0 ; i < 10 ; i++ ); 더보기
[Socket] Option - Option 설정 함수 #include #include // 소켓에 옵션을 설정하는 함수 int setsockopt(int sockfd, int level, int optname, const void *optval, int optlen); // 소켓에 설정된 옵션 값을 얻어오는 함수 int getsockopt(int sockfd, int level, int optname, const void *optval, int *optlen); 반환값 반환 값은 성공시 0, 실패시 -1 리턴 리턴 값이 -1일 때 실패했다는 것을 알 수 있지만, 어떠한 이유로 실패했는지 상세하게 알기는 어렵다. 이때 errno변수를 참조하면 어떤 오류가 발생했는지 알 수 있다. (가장 최근의 오류 값만 저장한다.) EBADF : .. 더보기
Big Endian , Little Endian 4byte 정수 처리부분만 나누어 진다. Big Endial - Sun cpu를 사용 하는 컴퓨터 Little Endial - Intel cpu를 사용 하는 컴퓨터 0x12345678 값을 32비트로 표현을 하면 , Bing Endial 0x12 , 0x34 , 0x56 , 0x78 ( 상위 바이트값이 메모리상에 먼저 (번지수가 작은 위치에 ) 표시되는 방법 출력 : 12345678 Little Endial 0x78 , 0x56 , 0x34 , 0x12 ( 하위 바이트의 값이 메모리상에 먼저 ( 번지수가 작은 위치에 ) 표시되는 방법 출력 : 78654312 네트워크를 통해 데이터를 전송 할때는 통일된 방식을 이용해서 데이터를 전송하기로 약속 하였는데 , 이것이 바로 '네트워크 바이트 순서(Network.. 더보기