Eu só estou querendo saber o que a -fpermissive
bandeira faz no compilador g ++? Estou obtendo:
erro: obter endereço de temporário [-permissive]
que eu posso resolver dando a -fpermissive
bandeira ao compilador.
EDIT : Acabei de encontrar o que estava causando a parte do erro de endereço temporário! Eu vou consertar essa parte agora.
c++
gcc
compiler-options
mmirzadeh
fonte
fonte
O
-fpermissive
sinalizador faz com que o compilador relate algumas coisas que na verdade são erros (mas são permitidas por alguns compiladores) como avisos, para permitir que o código seja compilado mesmo que não esteja em conformidade com as regras de idioma. Você realmente deve corrigir o problema subjacente. Poste o menor exemplo de código compilável que demonstra o problema.fonte
Quando você escreve algo que não é permitido pelo padrão da linguagem (e, portanto, não pode realmente ser um comportamento bem definido, o que é motivo suficiente para não fazê-lo), mas passa a ser mapeado para algum tipo de executável se alimentado ingenuamente. o mecanismo de compilação,
-fpermissive
fará exatamente isso em vez de parar com esta mensagem de erro. Em alguns casos, o programa se comportará exatamente como você pretendia originalmente, mas você definitivamente não deve confiar nele, a menos que tenha algum motivo muito especial para não usar outra solução.fonte
Se você deseja um caso de uso do mundo real para isso, tente compilar uma versão muito antiga do X Windows - digamos, XFree86 ou XOrg a partir de 2004, em torno da divisão - usando uma versão "moderna" (tosse) do gcc , como 4.9.3.
Você notará que o CFLAGS da compilação especifica "-ansi" e "-pedantic". Em teoria, isso significa "explodir se algo violar levemente as especificações da linguagem". Na prática, a série 3.x de gcc não capturou muito desse tipo de coisa, e construí-la com 4.9.3 deixará um buraco de fumaça no chão, a menos que você defina CFLAGS e BOOTSTRAPCFLAGS como "-permissive".
Usando esse sinalizador, a maioria desses arquivos C realmente será criada, deixando você livre para passar para os destroços dependentes da versão que o lexer irá gerar. =]
fonte