-pedantic acha pêlo em ovo

-pedantic acha pêlo em ovo

por Andre Lopes da Silva -
Número de respostas: 8

Bom, gostaria de saber o que faz a opção do compilador "-pedantic" além de achar pêlo em ovo... desculpe a expressão, mas meu EP rodando com a opção -pedantic no Dev-C++ 4.9.9.2 me disse apenas um warning sobre o meu EP que é que "ISO C90 não suporta %lf para printf". os outros 22 Warnings são sobre o STDIO.H, STDLIB.H, STDARG.H e STDDEF.H, que contem alguns comandos que geram Warnings... mas pô, e o que eu tenho a ver com esses Warnings? a função é do próprio compilador, não fui eu que criei!

Além de me dizer que o ISO C90 não suporta %lf no printf (que aliás no meu resultado saiu certinho, não vi problema), o -pedantic faz algo mais útil ou vai ficar só me enchendo de warnings de coisas que não me competem arrumar?

Em resposta à Andre Lopes da Silva

Re: -pedantic acha pêlo em ovo

por Marcos Komatsu -
Acho que -pedantic só serve pra achar pelo em ovo triste , mas em todo caso o programa compila direitinho e funciona!

sobre esse problema do ISO C90 e o %lf: basta subsitituir %lf por %f (ou seja ao inves de usar double, usa float). o professor tinha falado na aula que não teria problemas em usar float ao inves de double...
Em resposta à Andre Lopes da Silva

Re: -pedantic acha pêlo em ovo

por Wellington Castello -
Se você está usando uma variável double basta usar %f para printf ou %.Pf, onde P é a precisão.

$man printf -a
f,F The double argument is rounded and converted to deci‐
mal notation in the style [-]ddd.ddd, where the number
of digits after the decimal-point character is equal
to the precision specification. If the precision is
missing, it is taken as 6; if the precision is explic‐
itly zero, no decimal-point character appears. If a
decimal point appears, at least one digit appears
before it.

No scanf você usa %lf para uma variável double, l é o modificador de tipo e f marca que o ponteiro é um double. Lembra que scanf usa ponteiros.

$man scanf
int scanf(const char *format, ...);
...the results from such conversions, if any,
are stored in the locations pointed to by the pointer argu‐
ments that follow format.

l Indicates either that the conversion will be one of
diouxX or n and the next pointer is a pointer to a
long int or unsigned long int (rather than int), or
that the conversion will be one of efg and the next
pointer is a pointer to double (rather than float).
Specifying two l characters is equivalent to L. If
used with %c or %s the corresponding parameter is con‐
sidered as a pointer to a wide character or wide char‐
acter string respectively.

-pedantic e -ansi funcionam bem para aquilo que propõe, compete ao programador escrever conforme o ISO C90 aprovo

Quais os outros warnings? Acho estranho ter algo fora de padrão naqueles arquivos de cabeçalho já que o DevCPP usa a implementação do GCC no MinGW.
Em resposta à Wellington Castello

Re: -pedantic acha pêlo em ovo

por Andre Lopes da Silva -

Obrigado pela a ajuda, eu havia esquecido de que podia usar apenas %f pra imprimir double, apesar de isso não dar erro.

No entanto, mando a screenshot em anexo dos warnings que recebo com o -pedantic. Desconsiderar o warning do %lf do printf que vou arrumar (as duas últimas linhas)

Se alguém souber se o problema é do EP, pro favor avise, mas acho que isso é pêlo em ovo só, huehuehuehue

Anexo pedantic.JPG
Em resposta à Andre Lopes da Silva

Re: -pedantic acha pêlo em ovo

por Wellington Castello -
Realmente, isso é bizarro, o único warning que parece ser referente ao seu programa é o do %lf mesmo.

Tenta levar uma cópia num linux e compilar com gcc pra ver se aparece algo estranho ainda.
$gcc -o Funcionando -pedantic -ansi Funcionando.c

Não acho que vá aparecer esses warnings no gcc de verdade boca aberta
Em resposta à Wellington Castello

Re: -pedantic acha pêlo em ovo

por Marcos Komatsu -

Entao, eu stava com o mesmo probelma do Andre, estranhamente compilei hoje o programa aqui no CEC (na salinha que tem do lado da sala dos computadores com Linux) no DEVCpp e nao apareceu nenhuma mensagemd e erro.

 

 

Compiler: Default compiler
Executing  gcc.exe...
gcc.exe "C:\Documents and Settings\mkomatsu\My Documents\ep1ok.c" -o "C:\Documents and Settings\mkomatsu\My Documents\ep1ok.exe"   -Wall -ansi -pedantic -O2  -I"include"   -L"lib"
Execution terminated
Compilation successful
Em resposta à Andre Lopes da Silva

Re: -pedantic acha pêlo em ovo

por Carlos Hitoshi Morimoto -
Ois,
algumas versão do gcc tem "extensões" que não são compatíveis com a opção -ansi. Como essas mensagens de warning não tem a ver com o seu código, não se preocupe com elas.
[]s
Hitoshi