전체 글 139

전처리기란?

소스파일 -> 전처리기 -> 컴파일러 -> 실행파일 이 순서로 컴퓨터는 처리하는데 사용자가 작성한 프로그램을 실행하기 위해서는 컴파일러로 소스 파일을 실행 파일로 변환해야 하는데 C에서는 컴파일전에 #으로 시작되는 전처리기 지시자 부분을 먼저 처리한다. 이것을 전처리기 (preprocessor)라하고 프로그램에서 사용자 임의로 수식이나 상수를 정의하거나 외부 파일을 삽입하는 등의 작업을 한다. 어떤분은 블로거에서 글을 퍼왔네요 ^^ [출처] 전처리기란??|작성자 김태우 [출처] 전처리기란??|작성자 김태우

#undef 사용 및 정의

#undef는 #define 으로 정의된 매크로를 삭제하고 재 정의할때 사용되는 매크로 이다 . #define TIME 800 #include #undef TIME #define TIME 1400 #include 이예를 보면 TIME이라는 매크로를 800으로 정의하고 ext1.h 파일 에서는 TIME이라는 매크로가 사용되었을때에는 800값이 사용되지만 undef를 이용하여 삭제하고 다시 재 정의를 통해 ext2.h파일에서 1400이라는 값이 사용되게 된다

#ifdef ~ #endif , #ifndef~#endif 정의

#ifdef ~#endif 는 전처리문에서 처리하는 키워드로서 #ifdef 매크로 명 { } #endif 일때 매크로명을 정의해주면 예로 #ifdef START { } #endif 일때 START 매크로가 정의 되어있으면 스코프(블럭 통영범위)영역이 실행될것이며 정의가 되어 있지 않으면 실행되지 않을것이다. 그럼 이젠 #ifndef 에 대해 말해보겠다. #ifndef 매크로명 { } #endif 는 #ifdef 와 다른점은 #ifdef는 정의가 될때마다 실행되는 반면에 #ifndef는 정의되지 않을시에 실행 되고 다음부터는 실행되지 않는다 . 딱 한번밖에 실행되지 않는다는 말이다 ㅎㅎ

#ifndef ~ #endif 와 #pragma once의 차이점

둘다 헤더파일을 한번만 정의할때 사용되는 키워드이다 !! 그런데 이 두개의 차이점은 ? 보통 #pragma once와 #ifndef를 헤더파일 상단에 붙이는데 둘다 헤더파일을 한번만 컴파일 하라는 의미다 차이점은 #pragma는 컴파일러마다 종속적인 사항을 지시하는거라 표준이 아니다 하지만 대부분의 컴파일러들이 지원한다고한다 빌드시 #pragma once를 포함한 헤더파일을 기억해두고 나중에 똑같은 헤더파일을 만나게되면 아예 열어보지도 않고 넘어간다 근데 #ifndef는 언어차원의 표준이다 둘을 비교할때 속도는 #pragma once가 중복된 파일을 만난경우 아예 넘어가므로 약간 빠르다 이것은 오직 인클루드 가드 용도로만 정해져있기 때문이다 하지만 #ifndef는 모든 헤더파일을 열어서 확인하는 방식이다..

소멸자!!

생성자 가 있으면 당연히 소멸시키는 소멸자가 있기 마련이다 !!! 소멸자란 .... 소멸자는 객체가 블럭통영범위가 끝났을때 즉 스코프 가 끝났을때 객체 이름이 사라지기 전에 소멸자를 호출한다. 소멸자는 무엇을 할때 편할까?? 클래스를 동적 할당을 했다고 과정해보자 그럼 우리는 프로그램이 끝나기전에 할당한 클래스를 하나하나씩 소멸해야할것이다 그럼 가독성이 떨어진다. 이를 위해 소멸자를 이용하여 동적 할당된 객체들을 스스로 해체할수 있다. ex> #include class Book { int *Data; public: Book(int _data) { Data = new _data; } ~Book() { delete Data; } }; 이처럼 소멸자를 정의하여 쉽고 빠르게 프로그램이 끝났을때 소멸자를 호출하여..

생성자!!

생성자란? -> 생성자라는 말을 처음 듣게 되었을것입니다. C언어에서는 존재하지 않고 C++에서 존재하는 것으로 클래스를 선언 하고 객체를 생성할때 자동으로 생성 및 사용자에 의해 정의할수 있는데요. 좀더 알아보기 전에 객체가 할때 무슨일이 발생하는지 부터 알아보겠습니다. 객체를 생성했을시 먼저 메모리 공간을 확보하고 생성자라는것이 실행됩니다. 예제를 통해서 알아보겠습니다. class Song { int a; public: Song(){cout