• Save
[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

[아꿈사] The C++ Programming Language 9장 소스 파일과 프로그램

  • 771 views
Uploaded on

 

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
771
On Slideshare
756
From Embeds
15
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 15

http://andstudy.com 13
http://blog.naver.com 2

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 9. 소스 파일과 프로그램 아꿈사 http://cafe.naver.com/architect1 해강 아꿈사 오전반 C++ 뽀개기 - TCPL 2013. 03. 02 1
  • 2. 시작하기 전에오늘은 내용이 쉽습니다그래서 PT도 간략합니다 신난다중간중간 자신의 경험담을 이야기해 봅시다 2
  • 3. 분할 컴파일분할 컴파일을 위한 링크 관계에서 주의사항1. 객체의 정의는 반드시 한번만 이루어져야 한다2. 선언은 여러 번 될 수 있지만 타입이 다르면 안 된다컴파일러는 한번에 하나의 파일만 처리하기 때문에 링크 에러처리 못함이러한 에러는 링커가 걸러줌 3
  • 4. 링크외부 링크 관계 – 다른데서 가져 온 것내부 링크 관계 – 정의된 곳에서만 이름을 사용할 수 있게 해놓은 것인라인 함수는 내부 링크로만 – 외부는 절대 금지상수는 기본적으로 내부 링크 – 선언하면 외부 가능이름 없는 네임스페이스를 통해 내부 링크 관계를 만들어 줄 수 있다그러나 이렇게 내부와 외부를 섞어쓰는건 자살행위Static은 함수와 클래스 속에서만 사용 4
  • 5. 헤더 파일include 할 때의 주의사항들표준 라이브러리 헤더는 써주지 않아도 헤더로 통함익히 알거나 무의식적으로 이미 하는 내용…패스 5
  • 6. 단일 정의 규칙단일 정의 규칙(ODR)클래스, 나열자, 템플릿, 함수등 이름을 사용하는 것은 한번만주의사항1. 서로 다른 해석 단위에 있어야 한다2. 토큰 단위로 비교했을 때 서로 똑같아야 한다3. 두 해석 단위에 대해 각 토큰의 의미가 동일해야 한다ODR은 공통으로 쓰이는 소스 파일과 다른 곳에서클래스 정의를 포함시키기 위한 개념 6
  • 7. C++외 링크C++이 아닌 C를 사용할 경우에는 extern ”C”기존의 C 코드를 C++로 링크변환하지만 최근에는 위와 같이 쓸 일은 없으므로 역시 패스 7
  • 8. 헤더 파일 사용단일 헤더 스타일헤더 파일을 한곳에 모두 모아서 구성한다다중 헤더 스타일모듈별로 따로 헤더를 만들어 구성한다조언규모가 커질수록 다중 헤더 스타일이 관리에 좋다main()은 가능한 간략하게따로 구동 함수를 만드는 것이 좋다무조건 헤더를 나누는게 좋다기보다는단일과 다중은 서로 상호 보완프로그램에 따른 유연한 설계 필요가능하다면 구현자용과 사용자용 인터페이스를 구분해서 제공 8
  • 9. 프로그램프로그램은정의를 가진다main()은 하나다main()의 리턴을 만나면 끝난다이처럼 단순하지만 전역 변수나, 예외를 주의해야 한다전역 변수의 초기화 문제해결 : 전역 변수는 최소한으로 줄이자대안 : 함수에서 참조자 반환 9
  • 10. 프로그램 종료프로그램 종료 원인 4가지1. main()에서 return2. exit() 호출3. abort() 호출4. 예외 발생exit는 정적으로 생성된 소멸자가 호출abort는 소멸자 호출 단계가 무시일반적으로는 생략된 체 호출되는 부분 자세한 내용은 10장에C++ 표준함수인 atexit는 프로그램이 끝날 때 호출할 함수를 지정할 수 있다그러나 함수의 개수가 제한되어 실망으로 끝나는 명령어…소멸자가 호출되는 시점에 주의atexit가 호출되기 전에 만들어진 객체의 소멸자는 atexit 호출된 후에 실행atexit가 호출한 후에 만들어진 객체의 소멸자는 atexit 전에 실행 10
  • 11. 고수의 조언1. 인터페이스와 논리적 구조를 나타내는 데는 헤더 파일을 사용할 것.2. 어떤 헤더에 선언된 함수를 구현하는 소스 파일은 그 헤더를 #include 할 것.3. 서로 다른 해석 단위에 있는 전역 개체(데이터, 함수, ...)를 정의 할 때는 똑같은 이름은 우선적으로 피하고 비슷한 이름에 다른 뜻을 가진 것들도 피할 것.4. 인라인함수가 아닌 함수는 헤더안에 정의하지 말자.5. #include 가 사용될 곳은 오직 전역 유효범위와 네임스페이스 내부뿐이다.6. #include할 헤더는 반드시 완전한 선언 및 정의를 담고 있도록 하자.7. 인클루드 방지자를 사용할 것.8. C 헤더를 #include 할 때 전역 네임스페이스를 침범하는 것을 피하려면 네임스페이스를 사용하자.9. 자체에 모든 것을 갖춘 헤더가 좋다.10. 사용자용 인터페이스와 구현자용 인터페이스를 구분해서 만들어 두자.11. 보통 사용자용 인터페이스와 전문 사용자용 인터페이스를 구분해서 제공하자.12. 다른 언어로 작성된 프로그램에 섞어서 쓸 C++코드에는 런타임 초기화가 필요한 비지역객체가 들어가지 않도록 신경 쓰자. 11
  • 12. Q&A 12