정글에서 온 개발자

12/26 TIL XCode, C++ snippet 본문

TIL

12/26 TIL XCode, C++ snippet

dev-diver 2024. 12. 27. 00:19

XCode

처음 해봤다. vsc에 비해 터미널이 없어서 불편하다. 아직은 vsc에 비해 뭐가 좋은지 모르겠다. c++로 게임만들기를 따라하면서 기능을 익혀나갈 예정이다.

고생한 것

build가 비활성화 됨

템플릿을 empty로 생성하면 빌드가 바로 안된다. Target 등을 따로 잡아줘야 되는데 설정 연습하기는 좋지만 초보가 하기에는 별로인 것 같다. macOS - commandLineTools 를 클릭해 언어를 c++로 선택했다.

라이브러리를 못 찾음

ctrl+B 를 눌러 빌드를 할 수 있는데, SDL 라이브러리 인식을 못해 계속 뻑이 났다. 원인은 SDL을 x86_64 라이브러리버전이 있는 엉뚱한 곳에서 찾았기 때문인데,  해결은 다음과 같다.

  • 프로젝트를 눌러 Targets - Build Settings 에서 Header Search Paths, Header Library Paths를 SDL의 헤더와 라이브러리가 있는 path로 잘 잡아줘야 한다.
  • Targets - General에 있는 Frameworks and Library 에서도 라이브러리를 직접 찾아 추가해줘야 한다.

깃을 터미널로 못 씀

gpt가 알려준 Source Control이라는 메뉴도 없었는데, 현재 버전에서는 Integrate로 바뀌었나보다, vsc처럼 멋있게 커맨드를 못 쓰는게 아쉽다.

깃은 토큰을 통해 로그인했는데, 7일짜리다. 그냥 계속 로그인하게 하려면 토큰을 무기한으로 열기는 부담스러운데 방법을 찾아봐야겠다.

결과

감격스러운 빌드

C++

숫자, 문자 변환

stirng -> integer : atoi 보다 stoi(const string &str)를 쓰자.
integer -> string : to_string(int num)

패딩

string padded_str = string(len - str.size(), '0') + str
str.insert(s.begin(), len-str.size(), '0')
str.append(len-str.size(), '0')

#pragma once

이 코드가 쓰인 헤더파일이 두번 포함되지 않도록 한다.
include guard 대신 사용할 수 있는 현대적인 방법이다. 그러나 c++ 컴파일러 표준은 아니다.

아래는 include guard

#ifndef EXAMPLE_H
#define EXAMPLE_H

약점은 동일한 이름의 헤더파일이 있을 때 다른 경로에 있을 때 잘 작동하지 않을 수 있다는 것이다.
포함돼야 하는 파일이 포함되지 않을 수 있다.