본문 바로가기

C6

[C/C++] C 언어에서 상속과 다형성 구현하기 Ray Tracing in One Weekend는 레이 트레이싱에 대한 기초적인 개념을 설명하고 있습니다. 하지만 예제가 C++로 작성되어 있기 때문에 miniRT 과제를 위해서는 C++ 코드를 C 스타일로 변경해야합니다. 대부분의 내용은 그대로 사용할 수 있지만, 다수의 오브젝트를 처리할 때 상속과 다형성을 활용해서 Hittable와 Hittable_list 클래스를 구현하는 부분은 C에서 구현하기 까다롭습니다. 이 글에서는 Hittable와 Hittable_list 클래스를 위해 C언어에서 상속과 다형성을 활용했던 내용을 공유하려고 합니다. 상속과 다형성상속이란 객체 간의 계층 구조를 형성하는 것을 의미합니다. 상위 계층의 객체를 하위 계층에서 상속받으면, 따로 속성과 행동을 정의하지 않아도 상위 계.. 2024. 7. 29.
[C/C++] 개발 환경 구성하기 05 (miniLibX) [C/C++] 개발 환경 구성하기 01 (아키텍처 설계, 브랜치 전략) [C/C++] 개발 환경 구성하기 02 (cmake, libft, google test) [C/C++] 개발 환경 구성하기 03 (gcovr, codecov) [C/C++] 개발 환경 구성하기 04 (github action, norminette, codecov) [C/C++] 개발 환경 구성하기 05 (miniLibX)개발 환경을 구성하는 마지막 글입니다. 이번에는 42서울에서 사용하는 그래픽 라이브러리인 miniLibX를 실행파일에 추가하도록 하겠습니다. google test, libft와 마찬가지로 FetchContent를 사용하여 빌드 시점에 동적으로 가져오도록 설정했습니다. FetchContent_Declare( minili.. 2024. 7. 23.
[C/C++] 개발 환경 구성하기 04 (github action, norminette, codecov) [C/C++] 개발 환경 구성하기 01 (아키텍처 설계, 브랜치 전략)[C/C++] 개발 환경 구성하기 02 (cmake, libft, google test)[C/C++] 개발 환경 구성하기 03 (gcovr, codecov)[C/C++] 개발 환경 구성하기 04 (github action, norminette, codecov)[C/C++] 개발 환경 구성하기 05 (miniLibX) 이번에는 github action에서 norminette와 codecov를 실행하는 workflow를 작성하겠습니다. github action은 자동으로 빌드, 테스트, 배포할 수 있게 해주는 CI/CD(Continuous Integration/Continuous Deployment) 서비스입니다. github action.. 2024. 7. 22.
[C/C++] 개발 환경 구성하기 03 (gcovr, codecov) [C/C++] 개발 환경 구성하기 01 (아키텍처 설계, 브랜치 전략)[C/C++] 개발 환경 구성하기 02 (cmake, libft, google test)[C/C++] 개발 환경 구성하기 03 (gcovr, codecov)[C/C++] 개발 환경 구성하기 04 (github action, norminette, codecov)[C/C++] 개발 환경 구성하기 05 (miniLibX) 지난번에 이어서 이번에는 google test와 gcovr를 연동하는 방법에 대해 공유하도록 하겠습니다. google testgoogle test는 c++ 단위 테스트 프레임워크입니다. 다양한 조건의 assertion과 커스터마징(pre-test, post-test 등)을 지원하기 때문에 테스트를 작성하는데 많은 도움을 줍.. 2024. 7. 22.
[C/C++] 개발 환경 구성하기 02 (cmake, libft, google test) [C/C++] 개발 환경 구성하기 01 (아키텍처 설계, 브랜치 전략)[C/C++] 개발 환경 구성하기 02 (cmake, libft, google test)[C/C++] 개발 환경 구성하기 03 (gcovr, codecov)[C/C++] 개발 환경 구성하기 04 (github action, norminette, codecov)[C/C++] 개발 환경 구성하기 05 (miniLibX) 지난번에 이어서 개발 환경 세팅에 대한 내용입니다. 이번 글에서는 CMakeLists.txt를 작성했던 경험을 공유하려고 합니다. 저는 다음 4가지 부분으로 나눠서 진행했습니다.기본 프로젝트 설정FetchContent 설정 (libft, googletest)실행 파일 빌드테스트 실행 파일 빌드 기본 프로젝트 설정먼저 기본 .. 2024. 7. 22.
[C/C++] 개발 환경 구성하기 01 (아키텍처 설계, 브랜치 전략) [C/C++] 개발 환경 구성하기 01 (아키텍처 설계, 브랜치 전략)[C/C++] 개발 환경 구성하기 02 (cmake, libft, google test)[C/C++] 개발 환경 구성하기 03 (gcovr, codecov)[C/C++] 개발 환경 구성하기 04 (github action, norminette, codecov)[C/C++] 개발 환경 구성하기 05 (miniLibX)Java/Spring을 사용하면서 Junit5와 Jacoco와 같은 테스트 도구를 활용하여 단위 테스트에 작성하는 것에 익숙했습니다. 42서울에서는 과제를 C/C++로 구현하기 때문에 단위 테스트를 어떻게 작성할 지 고민이 많았습니다. 이전에 minishell 과제를 진행하면서 google test를 도입하려고 했으나 IDE.. 2024. 7. 21.