2016-11-06 5 views
1

C에서 헤더 파일의 사용법을 배우려고합니다. 이제 연구에서 거의 리소스를 찾지 못했지만 아무도 원하는 효과를 만들지 못했습니다.C에서 헤더 파일 사용

먼저 this 튜토리얼에 따라 헤더 파일 자체에 함수를 작성할 수 있습니다. 그러나 나는 그것을하고 싶지 않다. 인터페이스를 변경하지 않고 코드를 변경해도 헤더 파일을 변경하지 않고 유지하려고합니다.

this에 대한 대답은 두 가지 방법을 제안합니다. 먼저 코드와 헤더 파일을 따로 작성하여 다음과 같이 컴파일 할 때 포함 할 수 있습니다.

gcc -o myprog test.c library.c 

그러나 나는 그 중 하나를 원하지 않습니다. 내 라이브러리 함수는 컴파일 라인에 포함 할 필요없이 즉시 사용할 수 있어야합니다. 동일한 대답에 따르면 라이브러리를 만든 다음 -l 스위치를 사용하여 라이브러리에 연결할 수 있습니다. 그러나 printf와 같은 함수에 관해서는, 그 중 하나를 할 필요가 없습니다. 헤더 파일을 포함시키는 것뿐입니다. 그렇게 할 방법이 있습니까?

  1. 헤더 파일 자체에서 구현 될 필요가 없습니다 :; TL에 대한

    요약 DR

    나는 C의 라이브러리를 쓰고 싶어요.

  2. 라이브러리 함수를 사용할 때마다 컴파일 라인에 포함될 필요는 없습니다.

  3. 라이브러리 기능을 사용할 때마다 -l과 링크 할 필요는 없습니다.

  4. 기본적으로 라이브러리는 헤더 파일 만 포함하여 사용해야합니다.

어쨌든 Linux에서 할 수 있습니까?

+0

예전에는 공유 라이브러리가 표준이되기 전에 시스템 C 라이브러리에 코드를 추가 할 수있었습니다. 결코 좋은 생각이 아니 었습니다. 시스템 라이브러리를 업데이트하면 추가 내용이 삭제됩니다. 하지만 그렇게 할 수 있습니다. 그렇지 않으면 시스템 C 라이브러리를 자동으로 링크하는 것처럼 링커를 실행하여 라이브러리를 자동으로 링크하도록 C 컴파일러를 구성하는 방법을 찾아야합니다. 아마 가능합니다. 그것은 노력의 가치가 없다. (다시 컴파일러를 변경하면 컴파일러를 업데이트 할 때마다 변경해야 할 수도 있습니다.)단순히'-lwhatever'를 사용해야합니다. –

답변

2

그러나 printf와 같은 기능을 사용하면 두 가지 중 어느 것도 할 필요가 없습니다. 헤더 파일을 포함시키는 것뿐입니다. 그렇게 할 방법이 있습니까?

짧은 대답은 "아니오"입니다. C 컴파일러는 printf을 구현하는 라이브러리를 포함하여 "무료"로 일부 라이브러리를 링크합니다.

"공짜 물건"을 거부 할 수 있습니다 - gcc에서는 -nodefaultlibs입니다. 이 옵션을 추가하면 printf이 누락됩니다.

참고 : 헤더가 구현할 수있는 한 가지는 매크로입니다. 그러나 매크로는 일반적인 함수처럼 동작하지 않으므로주의해야합니다.