Je me demande simplement ce que fait l' -fpermissive
indicateur dans le compilateur g ++? Je reçois:
erreur: prise de l'adresse temporaire [-fpermissive]
que je peux résoudre en donnant le -fpermissive
drapeau au compilateur.
EDIT : Je viens de trouver ce qui causait l'erreur d'adresse temporaire! Je vais réparer cette partie maintenant.
c++
gcc
compiler-options
mmirzadeh
la source
la source
L'
-fpermissive
indicateur amène le compilateur à signaler certaines choses qui sont en fait des erreurs (mais qui sont autorisées par certains compilateurs) comme des avertissements, pour permettre au code de se compiler même s'il n'est pas conforme aux règles du langage. Vous devriez vraiment résoudre le problème sous-jacent. Publiez le plus petit exemple de code compilable qui illustre le problème.la source
Lorsque vous avez écrit quelque chose qui n'est pas autorisé par le standard du langage (et ne peut donc pas vraiment être un comportement bien défini, ce qui est une raison suffisante pour ne pas le faire) mais qu'il se mappe à une sorte d'exécutable s'il est nourri naïvement à le moteur de compilation, puis
-fpermissive
fera exactement cela au lieu de s'arrêter avec ce message d'erreur. Dans certains cas, le programme se comportera alors exactement comme vous l'aviez initialement prévu, mais vous ne devriez certainement pas vous y fier à moins que vous n'ayez une raison très particulière de ne pas utiliser une autre solution.la source
Si vous voulez un cas d'utilisation réel pour cela, essayez de compiler une très ancienne version de X Windows - par exemple, XFree86 ou XOrg à partir de 2004, juste autour de la scission - en utilisant une version «moderne» (toux) de gcc , comme 4.9.3.
Vous remarquerez que les CFLAGs de construction spécifient à la fois "-ansi" et "-pedantic". En théorie, cela signifie «exploser si quelque chose enfreint même légèrement les spécifications du langage». En pratique, la série 3.x de gcc n'a pas beaucoup attrapé ce genre de choses, et la construire avec 4.9.3 laissera un trou de fumée dans le sol à moins que vous ne régliez CFLAGS et BOOTSTRAPCFLAGS sur "-fpermissive".
En utilisant cet indicateur, la plupart de ces fichiers C seront réellement construits, vous laissant libre de passer à l'épave dépendante de la version que le lexer générera. =]
la source