2012-02-23 4 views
4

나는 매우 __sync_fetch_and_add을 사용할 수있는 프로그램을 작성 중입니다. 이 매우 간단 테스트로 검색 불행하게도 내 autoconf 스크립트 : 나는이 기능을 사용하고자하기 때문에__sync_fetch_and_add를 어떻게 선언합니까?

Wsuggest-attribute=noreturnconftest.c:56:1: warning: function declaration isn't a prototype [-Wstrict-prototypes] 
conftest.c:56:6: warning: conflicting types for built-in function '__sync_fetch_and_add' [enabled by default] 
conftest.c:65:1: warning: function declaration isn't a prototype [-Wstrict-prototypes] 
/tmp/ccqPsZz4.o: In function `main': 
/home/simsong/domex/src/bulk_extractor/tags/1.2.x/conftest.c:67: undefined reference to `__sync_fetch_and_add' 
collect2: ld returned 1 exit status 

이, 슈퍼 성가신이지만, 어떤 사람들 :

AC_CHECK_FUNCS([__sync_fetch_and_add]) 

이 오류를 생성합니다 일부 플랫폼에서는 컴파일이 제대로되지 않는다고 말했습니다. 프로토 타입을 원하지만, 하나가 아닌 것 같습니다.

감사합니다.

답변

4

AC_CHECK_FUNCS 함수를 redeclarating 때문에,이 경우에 사용할 수 없다 - (char functionthatiwant()/config.logconftest.c에서) autoconf는 않는 - 불리 내장 기능을 대체한다. 대신 다음과 같은 것이 필요할 것입니다.

AC_MSG_CHECKING([for __sync_fetch_and_add]) 
AC_LINK_IFELSE(
    [AC_LANG_SOURCE([ 
    int main(void) { return __sync_fetch_and_add((int *)0, 0); } 
    ])], 
    [AC_MSG_RESULT([yes])], 
    [AC_MSG_RESULT([no])] 
) 
관련 문제