Compartilhando avisos de compilação, em atenção para Paulo [RESOLVIDO]

1. Compartilhando avisos de compilação, em atenção para Paulo [RESOLVIDO]

Apprentice X
ApprenticeX

(usa Slackware)

Enviado em 11/02/2023 - 15:08h

Boa Tarde a todos!

O objetivo deste post é compartilhar com Paulo que estou sempre debatendo inúmeros assuntos, mas também serve para outros. Estou me referindo ao Paulo, pq é baseado em outro post: https://www.vivaolinux.com.br/topico/C-C++/Resultado-diferente-mudando-parametro-de-compilacao

Lendo o que o Paulo explicou sobre warnings, e que passou a usar o -wExtra eu queria acrescentar uma coisa importante e avisar ao Paulo para atenção ao seguinte:

Passei a compilar da seguinte forma, também trocando o -Wall por -Wextra Posso ter entendido errado a msg do Paulo, ou o que ele quis dizer!
gcc test.c -o test -march=native -Ofast -Wextra -pedantic -pedantic-errors -Werror -Wwrite-strings 

Mas notei em um programa, que não dá pra substituir o -Wall pelo -Wextra, pois sem o -Wall o compilador não informa por exemplo variáveis não usadas! Logo, penso que é melhor manter os 2 assim:
gcc test.c -o test -march=native -Ofast -Wall -Wextra -pedantic -pedantic-errors -Werror -Wwrite-strings 

Também li neste site: https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Warning-Options.html
E não encontrei informação de que o -Wextra teria tudo o que -Wall tem, ele apenas informa que -Wextra tem coisas que -Wall não tem, ou seja, entendi que neste caso vale a pena ter os 2.

Na minha forma de compilar, notei que acredito estar faltando é ver erros de semântica, que no momento nem sei como criar um programa pra checar isso, mas nesse meio tempo, pelo Eclipse ao testar um código o Eclipse acusou erros de semântica, que pelo terminal eu não tinha a informação, mas não deu tempo de anotar, pq eu precisei sair.

Qualquer pessoa que tenha mais a acrescentar sobre qual a melhor forma para compilar é bem vinda!
Ou claro se tiver qualquer problema com a forma que estou compilando também gostaria de saber,
E claro se tiver faltando alguma coisa que deixei de incluir também gostaria de saber!

Foi no programa abaixo que vi que -Wextra não informa sobre variável não usada, neste caso a len. O Programa abaixo apenas insere Text2 com caracteres não imprimíveis a Text1
#include <stdio.h>
#include <string.h>

int main(void) {
char Text1[] = "4shared.com | user: blabla@email.com | pass: 123";
char Text2[] = "\x1F#imported #palemoon\x1F\x1F"; // \x1F | \(ESCAPE) x1F(31) Character 31 = US
//char text[] = {31, '#', 'i', 'm', 'p', 'o', 'r', 't', 'e', 'd', ' ', '#', 'p', 'a', 'l', 'e', 'm', 'o', 'o', 'n', 31, 31, '\0'}; // Other way

char *sub = strstr(Text1, " | ");
if(sub != NULL) {
int len1 = strlen(Text1);
int len2 = strlen(Text2);
int len = strlen(sub);

char temp[len1 + len2 - 3 + 1];
strncpy(temp, Text1, sub - Text1);
temp[sub - Text1] = '\0';
strcat(temp, Text2);
strcat(temp, sub + 3);
strcpy(Text1, temp);
}

printf("%s\n", Text1); // Não vai mostrar o caracter não imprimível, obviamente!

FILE *outFile = fopen("out.txt", "w");
fprintf(outFile, "%s", Text1);
fclose(outFile);

return 0;
}



  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 11/02/2023 - 19:15h

Obrigado pelo alerta. Posso, sim, ter entendido errado a documentação.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts