Estou aprendendo C ++ e estou usando o g ++ no Linux para praticar.
Quero saber se as pessoas que trabalham como programadores usam a bandeira do g ++ e também sua importância no mundo real.
E os outros compiladores, eles também permitem isso? Isso se tornou um padrão de fato?
Estou interessado porque estou lendo o C ++ Primer, onde o autor aponta que é ilegal usar expressão não-const como dimensão na definição de matriz e o g ++ por padrão permite. E pode haver outras coisas que eu desconheço.
Respostas:
Sim, absolutamente faça isso. De fato, você precisa estudar a página de manual e ativar mais avisos do que
-pedantic
e-Wall
fará.Não, não há padrão. MSVC usa
/W4
por exemplo.fonte
-Wall -Wextra -Werror -pedantic -std=c++0x
:) #-pedantic
C ++, pois o manual do GCC implica que ele é destinado apenas ao C e passei a usar-std=c++14
em novos projetos.-Wall -Wextra -Werror -std=c++14
:)-Werror
transforma todos os avisos em erros. Mas-pedantic-errors
apenas comete erros deStandard ICO C++
violações.Embora eu não tenha programado C ++ há algum tempo, aconselho você a usar esse sinalizador. Ajuda a criar código compatível com os padrões e facilita a vida de todos. AFAIK, a maioria dos outros compiladores não suporta as extensões gcc / g ++.
Eu odeio isso, por exemplo, quando não consigo compilar código apenas porque o desenvolvedor original decidiu codificar contra extensões de compilador não padrão.
Aposto que uma grande quantidade (digamos 20%) de programas Linux que foram escritos em C / C ++ não compilará com nada além de gcc / g ++, o que me deixa meio triste. Sempre siga os padrões.
fonte
Pessoalmente eu uso:
-Wall -Wextra -Wshadow -Weffc ++ -Wstrict-aliasing -ansi -pedantic -Werror
Assim, ativa uma série de avisos, mas o mais importante trata todos os avisos como erros (como a maioria dos avisos são erros lógicos em seu pensamento).
fonte
-Wunreachable-code -Wno-long-long
-g -pg -fprofile-arcs -ftest-coverage
-g -O0
-O3
É bastante essencial usar a
-pedantic
bandeira.Gostaria apenas de acrescentar que, com o padrão atual, é aconselhável usar algo semelhante a:
Onde:
-std=c++17
diz para aderir à revisão do padrão C ++, publicada em 2017, você pode ler mais sobre isso aqui .-Wall
diz para:-Wextra
diz para habilitar mais alguns avisos, ainda não todos.-Werror
diz para fazer todos os avisos em erros.-Wpedantic
ou apenas-pedantic
diz para:-pedantic-errors
diz para cometer um erro sempre que o padrão básico (consulte -Wpedantic) exigir um diagnóstico.Esse conjunto geralmente é útil não apenas para iniciantes, pois eles aprendem gradualmente que cada aviso tem potencial para resultar em erro, mas também para uso normal.
Todas as opções de aviso são descritas em detalhes aqui na página GNU / GCC .
fonte