C_C++ 프로그래밍
-
[Effective C++] 3. 낌새만 보이면 const를 들이대 보자!C_C++ 프로그래밍/Effective C++ 2019. 8. 29. 16:30
로재의 개발 일기 constconst의 가장 큰 장점은 객체의 외부 변경을 불가능하도록 소스코드에 작성을 하면 컴파일러가 이를 반드시 지켜준다는 점입니다. 즉, 개발자 입장에서 의도치 않은 사용을 금지하거나, 그러한 의도를 소스코드에 보일 수 있다는 것 입니다. poiner const char name[] = "rojae"; // 문자열 선언 char *p = name; // 비상수 데이터, 비상수 포인터 const char* p = name; // 상수 데이터, 비상수 포인터 char* const p = name; // 비상수 데이터, 상수 포인터 const char* const p = name; // 상수 데이터, 상수 포인터 상수라는 단어가 들어가면 외부에서 변경이 불가능하다는 것입니다. 또한 vo..
-
[Effective C++] 2. #define을 쓰려거든 const enum, inline을 떠올리자.C_C++ 프로그래밍/Effective C++ 2019. 8. 28. 00:27
로재의 개발 일기 #define #include #ifdef #ifndef #include 는 현재 프로그래밍에서는 대체할 수는 있는 수단이 없고#ifdef #ifndef은 매우 유용하게 사용하는 수단입니다. 하지만, #define은 const, enum, inline 등등 매우 유용하게 쓰일 수 있는 수단이 있습니다. 즉 선행 처리자보다 컴파일러를 가까이 하자는 의미인데요.예를 들자면 #define PI = 3.14라고 한다면선행 처리자가 PI라고 작성된 소스코드를 모두 3.14로 선행 처리가 됩니다. 만약 이 부분에서 컴파일 오류나 논리 오류가 발생한다면?3.14라는 상수에서 오류가 검출이 되고 찾기 어렵겠죠?심지어 private 성격을 가지는 #define은 없습니다. const를 사용하자 #def..
-
[Effective C++] 1. C++를 언어들의 연합체로 바라보는 안목은 필수C_C++ 프로그래밍/Effective C++ 2019. 8. 26. 15:45
로재의 개발 일기 C++은 언어들의 연합체 c++을 잘 사용하기 위해서는 c++을 하나의 언어로 보기보다는c++을 하나의 연합체로 보는 것이 좋습니다.즉 c++이 여러 개의 하위 언어를 제공한다는 점을 제기하는 것입니다.그렇다고 막연한 이야기는 아닙니다. 4개 밖에 없기 때문이죠. 1. C C++은 여전히 C 기반이기 때문에, C만 쏙 빼서 사용이 가능합니다. 하지만, 이렇게 개발을 하기 된다면 효과적인 프로그래밍을 위한 규칙을 적용할 수 없게 됩니다. 템플릿도 없고, 예외도 없고, 오버로딩도 없고.... 등등 말입니다.. 2. 객체 지향 개념의 C++ '클래스를 사용하는 C'에 관한 이야기입니다. 생성자와 소멸자, 캡슐화, 상속, 다형성, 가상 함수(동적 바인딩)까지 포함합니다. 3. 템플릿 C++ 요..
-
[boost asio] 동기식 echo 채팅 클라이언트C_C++ 프로그래밍/boost 2019. 7. 31. 21:02
로재의 개발 일기 boost asio asio의 서버 부분 소스코드에 이어서 client 부분도 설명을 이어서 진행하겠다. synchronous_client.cpp12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include #include #pragma warning (disable : 4996) constexpr char SERVER_IP[] = "127.0.0.1";constexpr unsigned short PORT_NUMBER = 1234; int main() { boost::asio::io_service io_service; boost::asio::i..
-
[boost asio] 동기식 echo 채팅 서버C_C++ 프로그래밍/boost 2019. 7. 31. 20:38
로재의 개발 일기 boost asio 전에 boost에 대해서 설명한 바가 있고, 설치하여 사용하는 법까지 알아보았다.이번에는 네트워크 통신에 자주 사용이 되고 있는 boost asio의동기식 채팅 예제를 들면서 Winsock와 비교하면서 알아보겠다. synchronous_server.cpp 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include #include #pragma warning (disable : 4996); constexpr char SERVER_IP[] = "127.0.0.1";constexpr unsigned short PORT_NUMBER = 1234; int main(..
-
[MySQL] MySQL8.0 bad handshake 문제 해결하기C_C++ 프로그래밍 2019. 7. 22. 23:54
로재의 개발 일기 Bad handShake? 최신 버전의 sql 및 서버를 사용하게 되면데이터 입출력시에 만날 수 있는 오류 중 하나입니다. 해결법? WorkBench에서 자주 나오는 문제점입니다.(WorkBench 버전이 mysql을 지원하지 않는 경우..) 저 같은 경우는 Visual Studio에서 오류가 떠서 놀랐지만,(왜 vs에서 오류가 떴는지는 모르겠네요. 아시는 분은 댓글 부탁드려요!) 해결법은 간단했습니다. 여기에서 찾았어요! >> https://bugs.mysql.com/bug.php?id=91828 즉 다운그레이드를 해주면 됩니다. 네 맞아요.귀찮지만 SQL을 완벽하게 삭제한 이후에새로 깔라는 말입니다. ㅠㅠ 저 같은 경우에는 5.6 버전이 검증된 버전이라고 들어설치하고 테스트 결과! ..
-
[boost] 윈도우에 boost를 설치해보자C_C++ 프로그래밍/boost 2019. 7. 11. 15:04
로재의 개발 일기 boost 설치 윈도우에 boost를 설치하기 위해서 몇 가지 절차가 필요하며이 절차를 정리해보도록 하겠습니다. https://www.boost.org/ 다운로드 사이트에 들어가면 다양한 버전의 boost들이 있는 것을 볼 수 있습니다.적당한 버전의 boost를 설치하도록 하겠습니다.저는 1.70ver를 가져왔습니다. 다운을 받고 적당한 위치에 압축을 풀어줍니다. 압축을 풀면 이렇게 파일들이 생기게 됩니다. boost 설치를 해봅시다. 파일들 중에서 요놈을 실행시켜줍니다. 그러면 요 두놈이 생성이 되는데요. (b2, bjam) 명령어 프롬프트 (cmd)에서 b2를 실행시켜주면 끝납니다. b2 파일 빌드할때 "toolset"이라는 옵션을 설정하면 x86/x64 와 VS 버전을 설정할수 있..
-
[boost] boost란 무엇인가?C_C++ 프로그래밍/boost 2019. 7. 11. 14:36
로재의 개발 일기 Boost란?boost는 C++ 기반의 라이브러리로 방대한 양의 lib를 가지고 있다심지어 library가 아닌 libraries로 구성이 되어 있을 정도.. boost 사이트 그렇다면 이 boost를 왜 사용할까?알아보자 우선 C++ 우선 cpp에 대해서 설명을 할 필요가 있다.cpp은 STL이라는 표준 라이브러리를 제공하고 있다. ( 이 글을 읽는 분들이라면 STL 미경험자는 없다고 생각합니다. 심지어, 자신의 편의에 맞추어 STL을 재구성한 분들도 있을테니.. )이 처럼, C++에서 제공하는 기능과 C에서 제공하는 기능을 비교를 해보면 Cpp이 방대하게 제공을 하고 있다고 말할 수 있는데..Sometimes I do write C++ instead of C. C++ I think ..