프로그래밍 언어
-
iterator란 무엇인지, queue에서는 iterator가 없는 이유프로그래밍 언어/C++ 2023. 8. 17. 14:30
문득 queue에서는 왜 iterator가 없는지, iterator가 정확히 무엇인지에 대한 궁금증이 생겨 자료를 찾아보았다. 컨테이너(데이터 컬렉션)의 원소를 순회(traverse)하는 데 사용되는 개념이다iterator는 일종의 포인터처럼 작동하여 컨테이너 내의 원소에 접근하고 수정할 수 있는 방법을 제공벡터(vector), 리스트(list), 맵(map), 셋(set) 등에서 iterator를 사용하여 컨테이너 내의 원소에 반복적으로 접근큐(Queue)는 특정한 종류의 컨테이너로, 원소들이 들어온 순서대로 처리되는 구조이러한 특성 때문에 큐에서는 일반적으로 iterator를 지원하지 않습니다. 큐의 목적은 원소들을 앞에서부터 순차적으로 처리하는 것이며, iterator를 제공한다면 이러한 처리 방식..
-
cmake프로그래밍 언어/Cmake 2023. 4. 5. 11:10
cmake 빌드 프로그램X --> 빌드 파일을 생성하는 프로그램 (build system generator) cmake의 target은 무엇을 의미?? --> 실행 파일 혹은 라이브러리와 같이 프로그램을 구성하는 요소 build로 생기는 파일들 Makefile - make 명령어가 수행할 수 있는 명령어 CMakeFiles - OS 정보, 컴파일러 정보 등등을 기록한 임시 파일들 선택한 generator에 따라 프로젝트의 특정 파일 정보 저장 cmake_install.cmake: install 타임에 실행할 install 규칙을 다룬 cmake script CMakeCache.txt: CMake가 config를 그대로 재시작할 때 사용됨 Binary Target executable library Pseu..
-
library 만들기프로그래밍 언어/C++ 2023. 3. 30. 21:49
library - header only - 헤더에 정의 - static library - .a (linux), .lib (window) 라이브러리 - dynamic library - 로드 타임 - 런타임 -fPIC (Position Independent Code) GOT (Global Offset Table) PLT (Prosedure Linkage Table) static과 externstatic은 내부에서만 링크를 사용extern은 외부에 링크 허용nm 명령어 - name manglingc++ 에서 mangling 사용, c에서 사용하기 위해서는 mangling 없애줘야함
-
build 옵션프로그래밍 언어/C++ 2023. 3. 30. 21:43
static_assert(조건, 설명)memory leak tool g++ 컴파일 옵션 -o : output의 이름 설정 -Wall : warning을 모두 보여줌 - Werror : warning을 error로 간주 -std={} : {}에 들어가는 c++ 버전으로 빌드 - g : 컴파일의 세부 정보 출력 -O0 : 최적화 숫자 (optimazation level) -march={} : machine archtecture -c : object 파일 생성 -S: 어셈블리 생성
-
Makefile프로그래밍 언어/Cmake 2020. 5. 25. 11:50
gcc -c 를 이용한 object 파일 생성gcc -o 를 이용해 바이너리 파일 생성 gcc를 이용해 스크립트 파일을 생성해도 된다 compile.sh >>#! /bin/bashgcc -c hello.cgcc -c main.cgcc -o hello hello.o main.o 이러한 스크립트의 문제점이 무엇일까?프로젝트의 크기가 커진다면 컴파일할 파일도 많아질 것이다. 하지만 위 스크립트는 모든 파일을 다 컴파일해야 된다--> 파일에 소스가 바뀌었는지를 계속 체크해야하고 바뀐 목적 파일만 새로 컴파일하는 기능이 추가되어야 한다!!! Makefile >>.PHONY: all clean all : hello hello.o : hello.c gcc -c hello.c main...
-
GCC프로그래밍 언어/Cmake 2020. 5. 12. 20:44
gcc 컴파일러엄밀히 말하면 gcc는 컴파일러가 아님전처리기와 C컴파일러, 어셈블러, 링커를 각각 호출해주는 역할을 담당하는 컴파일러 드라이버(compiler driver) 전처리기 cpp0/ccl -EC 컴파일러 cc1어셈블러 as링커 collect2 --> ld C 컴파일러 위치 /usr/libexec/gcc/i386-redhat-linux/4.12/cc1(/usr/lib/gcc/i486-linux-gnu/4.12/cc1) C 컴파일러 위치 /usr/libexec/gcc/i386-redhat-linux/4.12cc1 : C 컴파일러, -E 옵션을 붙이면 C 전처리기로 동작cc1plus : C++ 컴파일러, -E 옵션을 붙이면 C++ 전처리기로 동작collect2 : 링커 (내부에서 링커인 ld를 호출..