프로그래밍/c++
-
구글 C++ 스타일 가이드 - 이름 짓기프로그래밍/c++ 2014. 5. 2. 23:57
구글 C++ 스타일 가이드 - 이름 짓기(Google C++ Style Guide - Naming) 1. 일반적인 이름 규칙 함수, 변수, 파일 이름은 설명적이어야 하므로 가급적 축약하지 않는다. 타입과 변수는 명사, 함수는 명령 동사로 쓴다. - 이름 짓기 이름은 가급적 설명적이어야한다. 다음은 좋고 나쁜 예이다. //좋은 예 int num_errors; int num_completed_connections; //나쁜 예 int n; int nerr; int num_comp_conn; - 약어 프로젝트 외에서도 잘 알려진 약어가 아니라면 축약하지 사용하지 않는다. // 좋은 예 int num_dns_connections; // dns는 외부에 많이 알려진 약어이다. openDvdPlayer(); // ..
-
[c++11] std::mutex프로그래밍/c++ 2014. 4. 27. 13:14
쓰레드(thread)를 사용하다보면 하나의 자원에 동시에 접근하는 경우가 있는데, 이를 방지하기 위해 사용하는 표준 라이브러리에서 제공하는 객체(C++11) 헤더 선언 std::mutex mutex; lock() 뮤텍스를 소유를 시도함. 뮤텍스를 소유할 때까지 쓰레드는 대기. unlock() 뮤텍스의 소유권을 놓음. 쓰레드 소유를 대기한(lock을 호출한) 쓰레드가 있다면 소유권은 다른 쓰레드에게 넘어간다. try_lock() bool을 반환. 기존의 lock은 소유권을 받을 때까지 대기에 들어갔다면, 이 함수는 호출 되는 순간 소유권을 얻어내지 못하면 false를 반환. 공유된 자원이 다른 쓰레드에서 사용중이라면(try_lock 반환값이 false라면), 다른 작업을 하는 식으로 사용이 가능. ++ 윈..
-
C++ 구조체 멤버를 숨기는 기법 Pimpl프로그래밍/c++ 2013. 3. 28. 09:42
1 // 헤더 파일 // 2 3 class Pimpl 4 { 5 public: 6 Pimpl(void); 7 ~Pimpl(void); 8 9 protected: 10 struct Pim; // 맴버변수의 구조체 전방선언 11 Pim* pimpl; // 전방선언한 멤버의 포인터 12 }; 13 14 // CPP 파일 // 15 #include 16 17 struct Pim // 구조체 이름은 전방선언과 같은 이름으로! 18 { 19 int a; 20 int b; 21 int c; 22 //...멤버변수들 선언 23 } 24 25 Pimpl::Pimpl( void ) 26 { 27 pimpl = new Pim; // 생성자에서 멤버 변수에 할당을 함 28 } 29 30 ... 31 32 ~Pimpl::Pim..