나는 최근 공용 헤더 내에서 HAVE_FEATUREFOO
과 같은 변수를 사용하는 라이브러리를 발견했습니다.공용 헤더에서`AC_DEFINE`과`AC_DEFINE_UNQUOTED`에 정의 된 변수를 올바르게 사용하는 방법은 무엇입니까?
여기에는 #include "config.h"
문도 포함됩니다. 이러한 선언은 구조체 선언에도 사용되며 조건부로 구조체 멤버를 제거합니다. 라이브러리 빌드 및 종속 프로그램 빌드에 사용되는 값의 불일치로 인해 메모리가 손상 될 수 있습니다.
그래서, 라이브러리의 사용과 그것의 헤더는 다음과 같은 한 수 결과 :
#include "config.h"
실패,- 또는 런타임에 메모리 손상.
나는 autotools를 아주 새로운 해요,하지만 몇 가지 조사 후 나는 그들이 AC_DEFINE
or AC_DEFINE_UNQUOTED
를 사용하여 정의되는 것을 발견했습니다. 그리고 config.h
은 AC_CONFIG_HEADERS
을 사용하여 생성됩니다.
추가 연구를 통해 헤더를 설치하는 include_HEADERS
을 발견했습니다. 그리고 헤더 config.h
이 목록에 추가되면 올바르게 설치됩니다.
AC_CONFIG_HEADERS
에 의해 자동 도구로 생성 된 config.h
헤더 파일을 설치하는 것이 올바른 방법입니까?