분류 전체보기 (778) 썸네일형 리스트형 [결정문제] ARCTIC [1. 문제 설명]https://www.algospot.com/judge/problem/read/ARCTIC[2. 풀이 접근] [3. 코드] [수치해석] LOAN [1. 문제 설명]https://www.algospot.com/judge/problem/read/LOAN[2. 풀이 접근] [3. 코드] [수치해석] FOSSIL [1. 문제 설명]https://www.algospot.com/judge/problem/read/FOSSIL[2. 풀이 접근] [3. 코드] [수치해석] RATIO [1. 문제 설명]https://www.algospot.com/judge/problem/read/RATIO[2. 풀이 접근][3. 코드] add_dependencies [1. 개요]빌드(컴파일) 순서를 결정하는 add_dependencies 는 target_link_libraries 와 어떤 차이가 있는지 정리한다.[2. target_link_libraries / add_dependencies]target_link_libraries 도 빌드 순서를 제어한다는 점에서 add_dependencies 와 유사하다.그러나 가장 큰 차이점이 있다면 링킹 처리 순서도 관여한다는 점이다. 그렇다면, add_dependencies 가 유용한 순간은 언제인가?target 간 실제 의존성이 있지는 않지만 (링킹과 관련 없지만) 빌드 순서를 제어할 필요가 있을 때add_custom_command 나 add_custom_target 등으로 먼저 빌드해야 할 것이 있을 때등이 있다.[3. 결.. LINK_LIBRARIES 와 INTERFACE_LINK_LIBRARIES 의 차이점 [1. 개요]get_property 를 통해 라이브러리 참조 관계를 가져와 일부 수정 후set_property 를 통해 적용했다 생각했지만,cmake 빌드 결과에서 해당 target 의 라이브러리 참조 관계는 적용되지 않았다. 이는, LINK_LIBRARIES 대상으로만 수정이 되었고,INTERFACE_LINK_LIBRARIES 를 대상으로는 수정이 되지 않았기 때문이었다.[2. PRIVATE, PUBLIC, INTERFACE]target 의 헤더파일 참조 경로나 라이브러리 링킹 정보를 명시할 때 scope 를 지정할 수 있다.PRIVATE: 해당 target 만 참조 (이 target 을 참조하는 대상은 상관없음)PUBLIC: 해당 target 및 이 target 을 참조하는 대상도 영향을 받음INT.. default 값에 대하여 [1. 개요].proto 작성 시 default 값을 사용하는 문제에 대하여 개인적인 견해를 정리한다.[2. syntax 버전].proto 작성 시 기본적으로 syntax 버전을 명시하는데, 각각 아래와 같다.버전특징syntax = "2"default 사용 가능syntax = "3"default 사용 불가능 (v3.12 ~ ) 기본적으로 .proto 파일에 명시 된 message 는 cpp 기준 기본적으로 protoc 를 거쳐 class 화 된다.이 때, 각 클래스는 멤버 변수들을 갖기 때문에 이미 default 값을 갖게 된다. (0, null, false, ... )syntax = "2" 에서 default 는 0, false 외 값을 명시할 수 있는 것이다.(이러한 기능이 큰 의미가 있는지는 잘 모.. bash shell 실행 옵션 [1. 개요]bash 쉘 스크립트 실행 시 단순하게 ./myjob.sh 로 실행하는 것 외에다양한 옵션을 주어가면서 실행할 수 있다. 여기서는 몇가지 옵션과 유용한 상황을 같이 정리하도록 한다.[2. 옵션]-c 옵션문자열을 bash 코드처럼 실행 할 수 있게 해줌다른 셸 환경에서 bash 문법 강제 실행 SSH/원격 실행 (SSH 로 실행 시 기본 쉘이 bash 가 아닐 수 있음)-x 옵션명령어 추적 (trace)쉘 스크립트 내 실행한 명령어를 출력 $ ls ${anypath}위와 같이, ${anypath} 가 실제 값으로 치환 되어 ls /home/user 와 같이 출력됨쉘 스크립트 디버깅(?) 할 대 유용-e명령어 실패 시 즉시 종료쉘 스크립트 내 에서 특정 명령어의 exit code 를 직접 체크하.. 함수의 중복 정의 방지 [1. 개요]C++ 에서는 함수는 반드시 하나의 정의만 가져야 한다.이렇게 함수를 하나만 정의하는 방법은 아래와 같다.[2. .cpp 파일에 정의]가장 일반적인 방법으로, .hpp 파일에 함수의 선언을 명시하고.cpp 파일에 해당 함수를 정의 함.[3. .hpp 파일에 정의]기본적으로 .hpp 에 함수를 선언 및 정의 하는 경우 중복 함수 정의로 인해 컴파일 에러가 발생하게 된다.그러나 아래와 같은 경우는 중복 함수 정의로 처리하지 않는다.템플릿 함수 (컴파일 시점에 인스턴스화 해야 함)클래스의 멤버 함수 나 static 함수inline 함수여기서 inline 함수는 중복 함수 정의로 처리하지 않는 점을 유념하도록 한다. 버퍼에 안전한 문자열 함수 [1. 개요]기존 strcpy 나 strcat 등은 버퍼 길이를 체크하지 않아서, 버퍼 오버플로우에 취약 함.그래서 버퍼 길이를 인자로 받는 버퍼에 조금 안전한 문자열 함수가 있어,가급적 이러한 함수를 사용하는 것이 권장 됨 함수 목록strncpystrncatsnprintfstrncmp마지막 NULL 문자로 채워지는 것을 보장하지 않음.const char* cstr = "Hello" 를char buf[5] 에 복사 시, buf[4] = 0; 이 아님 가급적, (총 버퍼 길이 - 1) 을 넘기는 편이 좋아 보임 또한, strncat 에서는 (concat 위치 부터 남은 버퍼 길이 - 1) 을 넘기는 편이 낫다.[2. 예제]#include #include int main(){ const char* st.. 이전 1 2 3 4 ··· 78 다음