Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[9735] Re:제가 착각을 한듯 하군요 ^-^
김준엽 [corba] 888 읽음    2004-07-14 15:08
글을 다시 읽어보니 함수안의 함수라면 Nested Routine을 말씀하시는 것 같습니다.

이것은 C++에선 안되지요 아마 ^-^;;;

루틴을 캡슐화 할수도 있고 부모 루틴의 로컬변수를 땡겨 쓸 수 있는 장점이 있습니다.

저는 이거 터보파스칼 5.5때부터 썼었는데 크게 문제를 겪은 일은 없었습니다.

로컬변수 땡겨쓰는 기능은 아예 안썼거든요.

로컬변수 잘못 손대면 일이 꼬일 가능성이 있으니 참조형 파라미터 같은걸 써서 우회하심이 어떨런지요.

말씀하신 문제의 경우 부모루틴의 로컬변수 가져다 쓰는 부분이 제일 의심이 갑니다. (어디 까지나 제 생각입니다.;; )




어떤게좋을까요? 님이 쓰신 글 :
:
:
:
:
: 님의 말씀과 같이 c++의 인라인은 최대한 줄수를 줄여서 작성하라고, 여기 저기 c++활용
: 서적을 통해서 들은것 같습니다.
:
: 하지만, 처음의 질문과 같이 OPascal의 인라인(?)이 c++의 그것과 동일하게 동작하리란
: 생각은 좀 무리인것 같습니다. 저 역시 동일하게 동작하는지, 다르게 동작하는지에 대한
: 정보도 없어서 좀 답답한 상태 입니다.
:
: 게다가, OPascal의 함수안의 함수를 실제로 인라인 함수라 부르는지도 모르는 상태구요.
: 이걸 뭐라고 지칭하는지, 영어권의 OPascal을 좀 하는 이들은 이름을 분명히 알고 있을
: 텐데 어떻게 정보를 찾아야 하는지도 모르겠습니다.
:
: 어떤건지 잘 모르니, 편의상 "인라인 함수"라고 지칭하고 다음 얘기를 계속 하겠습니다.
:
: OPascal의 인라인 함수를 쓰게되면 얻는 이득은
:
: 1. 함수명이 인라인 함수를 싸고 있는 함수("부모함수"라고 지칭 하겠음)밖의 것과 동일
:    해도 된다. 그래서, 함수명을 다시 만드는 부담이나 오버로드에 대한 부담이 없다.
:
: 2. "부모함수"에 선언된 변수를 공유할 수 있다. 그래서, 새로운 변수를 만들지 않아도
:    되므로, 메모리 사용과 속도를 개선할 수 있다. 마치 글로벌 변수나, 파일레벨 변수
:    를 공유하는 효과를 내면서, "부모함수"에만 변수 스코프가 제한 되므로 변수중복
:    에 대한 부담을 어느정도 줄일 수 있다.
:
: 3. 하나의 "부모함수"에 필요로 하는 모든 프로세스를 넣을 수 있어서, 클래스의 캡슐화
:    와 비슷한 효과를 기대할 수 있다.
:
: 등등이 있습니다.
:
: 위의 이유로 저 같은 경우는 "인라인 함수"를 자주 사용하는편 입니다.
:
: 게다가 "인라인 함수"안의 "인라인 함수"역시 가능해서, 제 경험으로 약 4단계까지 인라인
: 화 해서 프로그래밍 했었던것 같습니다.
:
: 주절 주절 잘난체를 해버린것 같아 좀 무안하군요. 여튼, OPascal의 "인라인 함수"는 꼭
: 추천되야할 문법인것 같습니다.
:
: 좋은 의견 주셔서 감사하구요. 좋은 프로그램 짜시길 빌겠습니다.
:
:
:
:
:
: 김준엽 님이 쓰신 글 :
: : C++ 인라인 함수는 매크로 처럼 함수가 호출되는 곳 마다 바로 구현부를 끼워넣는다고 들었습니다.
: :
: : 그러니 당연히 스택을 쓸 필요가 없겠지요.
: :
: : 하지만 자기를 다시 부르는 경우 인라인이 제대로 동작할 리가 만무합니다.
: :
: : 호출 되는 곳 마다 구현부를 끼워넣으면 무한대의 코드가 되겠죠 ?
: :
: : 물론 컴파일러가 자동으로 인라인 아닌걸로 만들던지 해서 알아서 조치를 취해주겠지만...
: :
: : 결과적으로 델파이서 그렇게 했을 때 결과를 장담을 못드리겠군요.
: :
: : 얻는 이점은 분명히 하나도 없을 것이고...
: :
: : 인라인 쓰신다고 생각만큼 빨라지지 않습니다. 비대화 현상으로 오히려 더 느려지는 경우도 있어요.
: :
: : 개인적으론 비대화 현상 때문에 5줄이 넘어가는 함수엔 인라인을 쓰지 않습니다.
: :
: : 다시 한 번 생각해보세요.
: :
: :
: :
: :
: : 어떤게좋을까요? 님이 쓰신 글 :
: : :
: : :
: : : 델파이 5로 프로그램을 작성할 시절에 함수안의 함수( = 인라인 함수? )를 재귀호출
: : : 하면 어떤때는 잘 동작하지만, 때때로 오브젝트 참조등의 좀 복잡한 동작을 시키면
: : : 엑서스 바이어레이션을 일으켰던 걸로 기억합니다.
: : :
: : : 물론 에러나는 코드를 인라인 함수의 재귀호출이 아니고, 멤버 메서드나 일반함수의
: : : 재귀 호출로 바꾸어 놓으면 에러가 나지 않았구요.
: : :
: : : 그런데 지금은 델파이 7을 사용하고 있는데, 여기에서 좀 복잡한 파서를 하나 만들고
: : : 있습니다.
: : :
: : : 아무래도, 인라인 함수의 재귀호출이 중요하게 사용되야 할것 같습니다. 델파이 7에서
: : : 인라인 함수의 재귀호출이 안전한지에 대한 정보를 찾기가 쉽지 않은데... 혹시라도
: : : 델파이 7에서 인라인 함수의 재귀호출을 구현하고, 또 돌리고 있는 분들의 경험담을
: : : 좀 듣고 싶습니다.
: : :
: : : c++의 인라인 함수의 경우, 그 함수가 빨리 동작할 수 있는 이유는 표준 c++ 함수 호출
: : : 규약을 따르지 않고, 스택초기화 등등의 작업을 하지 않아서라고 알고 있습니다. 그러면
: : : 델파이의 인라인 함수의 경우는 어떤지... 도 궁금하군요.
: : :
: : : 고수분들의 고견을 부탁 드립니다.
: : :
: : :
: : :

+ -

관련 글 리스트
9713 인라인 함수(?)의 재귀호출.... 에러가 안날까... ??? 어떤게좋을까요? 1978 2004/07/08
9737     두분 모두 감사 감사... ^.^ 어떤게좋을까요? 898 2004/07/14
9733     Re:Nested 함수라고 합니다. 박지훈.임프 1628 2004/07/14
9730     Re:인라인 함수(?)의 재귀호출.... 에러가 안날까... ??? 김준엽 1706 2004/07/14
9731         음... c++의 인라인과 OPascal의 인라인(?)을 동일시 하는듯 합니다. 어떤게좋을까요? 996 2004/07/14
9735             Re:제가 착각을 한듯 하군요 ^-^ 김준엽 888 2004/07/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.