인라인을 완전 파해치는 항목이다. 1 ) 인라인화란 무엇인가? 함수를 코드로 직접 대체하는 행위, 라고 정리해도 될 듯 싶다. 이런 행위 때문에, 함수 호출 비용이 없어 진다. 참조 : http://ikpil.com/762 2 ) 인라인화는 언제 수행되는가? a. 코딩 시점에서? 코딩 시점에서, 프로그래머가 inline 을 지정해 주면서 수행 된다. 코딩 시점에서 inline 키워드를 집어 넣으려면, 세 가지 염두해야할 것이 있다. 첫째, .. 우선 하지 말아야 한다. 둘째, inline 키워드는 컴파일러의 허락을 받아야 한다. 셋째, 인라인화 발생지점을 예측하지 말아야 한다. 셋째 부연 설명 : 인라인화 자체는 함수가 아닌 함수 호출에 대해서 일어난다. 그래서 어떤 지점에서 인라인화 되고, 어떤 지점에..
inline 검색 결과
이번 항목에선 inline을 언제 사용 해야 되는지에 대한 논쟁이다. 대부분 inline을 과용 하고 있어, 문제가 될 소지가 많이 있다고 허브셔터는 지적한다. 허브 셔터는 3개의 질문을 통해서 한번 생각해 보라고 한다. 1. inline이 하는 일은? 함수를 inline으로 만들면 컴파일러는 함수가 쓰이는 곳마다 함수의 코드를 직접 복사해서 붙인다. 이렇게 되므로써, 컴파일러는 함수 호출 코드를 만들지 않고 함수를 마음껏 실행 할 수 있다. 2. inline 함수를 만들면 효율성이 높아지나? 꼭 그런 것만은 아니다. 만약 여기서 "무엇을 최적화 하려 하는가?"를 질문하지 않았다면, 바로 함정에 빠진것이라고 한다. 왜냐하면 inline의 효율은 함수 호출 비용만 줄여 줄 수 있을 뿐이기 때문이다. a )..
인라인 함수를 모른다면 이야기가 .. 진행되지 않으나, 기초기 때문에 넘긴다. 미주얼고주알 따져서 이해해두어야 하는 이유는 여러개가 있다. .. 뭐 .. 이해하고 나니 인라인도 인라인 나름이라는 생각을 하게 되어서 결론만 나오게 된다. 인라인 사용법 첫째, 간단한것만 inline 키워드를 사용 한다.(클래스 내부의 .. 그냥 멤버 리턴같은 것들) 이것밖에 없다. 둘째, 생성자와 소멸자를 inline 으로 사용 하려 들지 말자.(생성자와 소멸자 호출 구역이 상대적으로 많고, 생성자 수정을 하게 된다면, 생성자 호출 구역을 전부 재컴파일 해야 되기 때문이다) 이것만은 잊지 말자! 1. 함수 인라인은 작으면서 자주 호출되는 함수에 대해서만 하는 것으로 묶어 두자. 2. 함수 템플릿이 대개 헤더 파일에 들어 간..
부재 : 가급적 선행 처리자보다 컴파일러를 더 가까이 하자. 이유 1. 컴파일러는 #define을 알아차리지 못하기 때문에, 디버그가 힘들어지기 때문이다. 주의점 1. const로 상수화 시킬때 포인터라면 데이터와 포인터 역시 막아야 한다. - const char * const authorname = "Scott Meyers"; 2. 클래스 상수 멤버상수는 static const int a = 5; 로 사용 하면 좋다. 3. 클래스를 컴파일 도중 클래스 상수(클래스에서만 쓰일) 값이 필요하다면 enum을 사용 하는게 좋다. - enum에 대한 참조자를 갖지 못한다. - 메모리를 사용하지 않는다. 4. #define 함수는 잦은 버그가 있기 때문에 inline함수를 하면 더 좋다. 이것만은 잊지 말자! 1..
최근댓글