2014-10-20 4 views
1

라이브러리가 포함 된 것이 좋습니다. Arb 라이브러리에는 Flint 헤더가 포함됩니다. 더 나은 연습은이 두 가지 중 어느 Arb를들을 포함하는 :"flint.h"또는 "flint/flint.h"를 포함하는 것이 더 좋습니다. 에 모든 헤더를 넣는 <a href="http://flintlib.org/" rel="nofollow">Flint</a> 라이브러리

  1. #include "flint.h"
  2. #include "flint/flint.h"

장점/단점 : Arb를 플린트가 /usr/include에 설치되어있는 경우

(예에서 데비안)에서 2.를 선택하면 사용자는 아무것도 할 필요가 없지만 1.을 사용하면 사용자는 -I/usr/include/flint을 사용해야합니다.

2. 장점은 Arb 라이브러리를 사용하는 사용자는 필요한 모든 라이브러리에 대해 $PREFIX/include에 대한 포함 경로 (-I) 만 지정하면된다는 것입니다. 1.로, 경로는 $PREFIX/include/flint을 포함해야하므로 더 많은 작업이 필요합니다.

+2

개인적으로 나는 2. 양식을 선호합니다. –

+1

누군가 다른 프로젝트에서 flint.h도 가지고 있고 그 파일도 사용해야한다면 어떨까요? "flint/.."형식을 사용해야합니다. 그러니 처음부터 그걸 붙잡아 라. – RedX

+1

이 질문은 의견을 바탕으로 왜 닫아야합니까? 두 번째 형식을 선호해야하는 이유는 확실합니다. – pmr

답변

4

항상 /usr/include에 상대적인 경로를 사용하십시오. 이렇게하면 코드가 대부분의 UNIX 시스템에서 기본적으로 빌드되고 이름 충돌을 피할 수 있습니다 (헤더 util.h).

프로젝트를 개발자가 사용하기 어려운 플랫폼 (대부분 Windows)으로 이식해야하는 즉시 빌드 시스템에서 종속성 위치를 확인하고 적절한 컴파일러 스위치를 설정해야합니다.

+0

감사! 그래서 2. 갈 길입니다. –

2

라이브러리 개발자는 클래스 A를 헤더 파일 A.h에 넣는 경향이 있습니다. 같은 이름의 클래스를 가진 두 개의 라이브러리를 사용하는 경우, -I를 통해 전달되는 include 디렉토리의 순서에 따라 잘못된 라이브러리의 헤더를 포함 할 수 있습니다. 때때로 일어날 수 있습니다. C++ 네임 스페이스 메커니즘은 여기서 도움이되지 않습니다. 은 y 라이브러리에서,

#include "x/A.h" 

대신

#include "A.h" 

예를 들어, 이름 충돌의 이러한 종류를 피하고 포함되어있는 X 라이브러리에서 아을 보장하지하는 데 도움이 수의 : 이렇게 .

관련 문제