2011-05-13 3 views

Répondre

3

Je ne pense pas qu'il existe une macro standard pour cela, mais voici quelque chose que vous devriez pouvoir étendre pour prendre en charge d'autres compilateurs si nécessaire, par ex. __hidden pour les compilateurs Sun:

AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], 
    ac_cv_hidden_visibility_attribute, [ 
    echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c 
    ac_cv_hidden_visibility_attribute=no 
    if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); 
    then 
     if grep '\.hidden.*foo' conftest.s >/dev/null; 
     then 
      ac_cv_hidden_visibility_attribute=yes 
     fi 
    fi 
    rm -f conftest.* 
    ]) 
if test $ac_cv_hidden_visibility_attribute = yes; 
then 
    AC_DEFINE(HAVE_HIDDEN_VISIBILITY_ATTRIBUTE, 1, 
      [Define if __attribute__((visibility("hidden"))) is supported.]) 
fi 

Le résultat config.h:

/* Define if __attribute__((visibility("hidden"))) is supported. */ 
#define HAVE_HIDDEN_VISIBILITY_ATTRIBUTE 1 
0

Vous pouvez essayer d'utiliser <sys/cdefs.h> avec macro __hiden

Questions connexes