À l'aide de gcc atomique objets internes?

Je suis en train d'utiliser __atomic_load_n de la gcc atomique les builtins page, la compilation avec

gcc -Wall -march=i686 -std=gnu99 ll.c -o ll

mais il me dit qu'il ne peut pas

avertissement: déclaration implicite de la fonction "__atomique_charger_n"

Je pensais que ce serait assez pour fournir gcc avec le arch et la march drapeaux (et par la définition de la std=gnu99 drapeau), mais en vain. En fait, même si je test pour la commune __GCC_VERSION__ ou __GNUC__ macros ne semblent pas avoir de valeurs... mais j'ai une jolie vanille gcc de l'installation, celui qui vient dans Ubuntu.

Je sais que je suis en train de faire quelque chose de stupide, mais je ne peux pas comprendre ce que. J'ai le gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

Code ressemble à ceci: c'est une fonction qui n'est jamais appelé (encore), de sorte que le problème est au moment de la compilation.

type* func(type* p) {
    type* q = __atomic_load_n (p, __ATOMIC_SEQ_CST);
}
  • Pouvez-vous nous montrer le code que vous offre l'erreur?
  • bien sûr, les questions a été mis à jour.
  • Je peux compiler votre code ne pose aucun problème (gcc 4.7.2) une fois que j'ai typedef type à int. Si vous soupçonnez un problème avec votre compilateur d'installation, peut-être essayer de construire un non-trival mais propre projet avec elle pour voir ce qui se passe?
  • Oh, bien. On dirait qu'il est temps de recompiler gcc 🙁 Il y va d'une heure. Merci.
  • Je crois que le __atomic_* fonctions ont été ajoutées en 4.7. Les versions précédentes ont __sync_* fonctions qui répondent à un objectif similaire.
  • comme @KerrekSB dit, cela a été introduit dans GCC 4.7 Vérifier GCC 4.6.3 de la documentation: gcc.gnu.org/onlinedocs/gcc-4.6.3/gcc
  • Depuis que vous avez été le premier à le dire, l'esprit en ajoutant les vôtres comme une réponse afin que je puisse l'accepter?
  • OK, en fait 🙂

InformationsquelleAutor Dervin Thunk | 2012-12-18