목록Computer Science (88)
ecsimsw
베이스 클래스의 객체에 파생 클래스의 객체가 복사되면 베이스 클래스의 프로퍼티 외에 나머지 추가적인 프로퍼피는 저장할 곳이 없어 복사가 불가능하다. 이것을 객체 잘림(object slicing)이라고 한다.
네임 맹글링은 동일한 함수명을 갖는, 오버로딩한 함수들을 함수의 형태와 파라미터 정보로 명칭을 따로 부여하여 구별하기 위한 매커니즘이다. @
- storage class (기억 부류)는 변수의 종류에 따라서 초기화나 파괴 시기, 얼마나 지속되어야하는지를 결정하는 역할을 한다.
정적 스코프 : 컴파일 시에 결정되는 가장 가까운 바깥쪽의 스코프 변수 값으로 처리 동적 스코프 : 컴파일 시 자료형 체크 불가능 : 대개 인터프리티드 언어에서 사용되는 방식 : 스택을 이용해서 호출되는 스코프들을 쌓고 가장 가까운 것의 변수 값이 바인딩 int count = 10; void foo2(){ print(count); } void foo1(){ int count = 20; foo2(); } main(){ foo1(); } // 정적 스코핑 : foo2의 출력은 count = 10 // 동적 스코핑 : foo2의 출력은 count = 20
- Binding Times : 언어 설계 (language design time) : 연산자와 연산 바인딩 : 언어 구현 (language implementation time) : 데이터 타입과 데이터 값 바인딩 : 프로그램 작성 (program writing time) : 알고리즘, 데이터 구조, 모듈 바인딩 : 컴파일 (compile time) : 변수와 데이터 유형 바인딩 : 링크 (link time) : 메모리 내의 프로그램 전체 라이브러리, 모듈 확정 : 로드 (load time) : 물리적 주소 선택 : 실행 (run time) : 변수에 메모리가 위치한 값 바인딩
ctags / cscope - ctags와 cscope를 이용하여 코드를 분석하는 방법과 유용했던 팁을 정리하였다. ctags - tj 명령어 뒤에 원하는 태그 이름을 입력하는 것으로 해당 함수나 변수가 선언된 위치로 점프할 수 있다. :tj "tags" - 명령어를 이용하지 않고 원하는 함수나 변수 위에 커서를 두고 점프하고 이전으로 돌아갈 수 있다. ctrl + ] ctrl + t cscope - cs type option keyword로 실행한다. type은 add / find / help / kill / reset / show 가 있고, find(f)와 아래 옵션을 통해 키워드를 검색한다. cscope commands[f] g : find the definitions s : search this ..
ctags / cscope - 리눅스에서 길고 복잡한 코드를 다룰때 유용한 유틸리티 두가지. ctags - 소스 코드의 태그(변수, 함수, 매크로 등의 선언 부분)들의 데이터 베이스 파일을 생성해 인덱스를 만들어 주어, 코드 분석 시 탐색할 수 있도록 하는 유틸리티이다. sudo apt-get install ctags - tags 파일을 생성하여 소스 코드의 태그를 데이터 베이스로 관리할 수 있다. ctags "Filename" ctags -R - 위 두 명령어처럼 ctags 다음에 파일 이름을 명시하는 것으로 해당 파일만 tags 파일을 만들거나, 아래 ctags -R처럼 현재 디렉토리의 모든 파일/ 하위 디렉토리의 모든 파일을 대상으로 tags 파일을 만들 수 있다. - vi 에디터에 tags 파일 ..
Shell / Shell script / Terminal, Console Shell - Shell은 운영체제 개념을 공부하면서 정리하였다. 쉘은 커널을 감싸서 사용자의 명령을 해석하여 커널에 전달한다. 쉽게 쉘은 사용자와 커널 사이의 인터페이스가 되는 프로그램이다. 쉘과 커널로 분리되어 쉘만 교체한다면 사용자가 직접 커널을 사용하는 인터페이스를 쉽게 선택할 수 있도록 한다. echo $SHELL 위 명령어를 터미널에 입력하는 것으로 현재 사용 중인 shell을 확인 할 수 있다. Shell script - 간단한 shell script 예제를 만들고 실행시켰다. 사용한 shell은 bash 이다. vi로 script 파일을 작성한다. #!/bin/bash 스크립트 상단에 #!/bin/bash 를 추가하고..