LINUX.ORG.RU

[gcc][опции] Как заставить стать более придирчивым?

 


0

0

Использую -Wall -Wextra -pedantic

Хочу чтобы он следил за точным соответствием прототипов функций и их реализацией, а так же их применением.

У меня был случай, когда вызывалась функция с неправильным количеством аргументов, из-за того что, я забыл обновить хидер с прототипами.

Да и вообще полезные опции приветствуются.

Ответ на: комментарий от Sylvia

вообще посмотрите man gcc
на предмет warning options, там много, в том числе и те, которые не были включены -Wall

Sylvia ★★★★★
()
Ответ на: комментарий от Ruga-Suneto

для 4.3.4

$ gcc -Q -Wall --help=warnings|grep disabled
-Wabi [disabled]
-Waggregate-return [disabled]
-Wassign-intercept [disabled]
-Wbad-function-cast [disabled]
-Wc++-compat [disabled]
-Wc++0x-compat [disabled]
-Wcast-align [disabled]
-Wcast-qual [disabled]
-Wconversion [disabled]
-Wcoverage-mismatch [disabled]
-Wctor-dtor-privacy [disabled]
-Wdeclaration-after-statement [disabled]
-Wdisabled-optimization [disabled]
-Weffc++ [disabled]
-Wfloat-equal [disabled]
-Wformat-nonliteral [disabled]
-Wformat-security [disabled]
-Wformat-y2k [disabled]
-Winit-self [disabled]
-Winline [disabled]
-Wlogical-op [disabled]
-Wmissing-declarations [disabled]
-Wmissing-format-attribute [disabled]
-Wmissing-noreturn [disabled]
-Wmissing-prototypes [disabled]
-Wnested-externs [disabled]
-Wnon-virtual-dtor [disabled]
-Wold-style-cast [disabled]
-Wold-style-definition [disabled]
-Woverloaded-virtual [disabled]
-Wpacked [disabled]
-Wpadded [disabled]
-Wpointer-arith [disabled]
-Wredundant-decls [disabled]
-Wreorder [disabled]
-Wselector [disabled]
-Wshadow [disabled]
-Wsign-promo [disabled]
-Wstack-protector [disabled]
-Wstrict-prototypes [disabled]
-Wstrict-selector-match [disabled]
-Wswitch-default [disabled]
-Wswitch-enum [disabled]
-Wsynth [disabled]
-Wsystem-headers [disabled]
-Wtraditional [disabled]
-Wtraditional-conversion [disabled]
-Wundeclared-selector [disabled]
-Wunreachable-code [disabled]
-Wunsafe-loop-optimizations [disabled]
-Wunused-parameter [disabled]
-Wvolatile-register-var [disabled]
-Wwrite-strings [disabled]

Sylvia ★★★★★
()
Ответ на: комментарий от golodranez

>O3 не совсем надёжна, могут вылезти неприятные глюки.

Например?

Windos7
()
Ответ на: комментарий от beastie

надож!!!!

#include <iostream>

using namespace std;


int main()
{
int n = 0;
n = n / n;

cout << «n: » << n << endl;
return 0;
}




[izx32@localhost ~]$ g++ test.cpp && ./a.out
Floating point exception (core dumped)
[izx32@localhost ~]$ g++ -O0 test.cpp && ./a.out
Floating point exception (core dumped)
[izx32@localhost ~]$ g++ -O2 test.cpp && ./a.out
n: 0
[izx32@localhost ~]$ g++ -O3 test.cpp && ./a.out
n: 0

Windos7
()
Ответ на: комментарий от Windos7

это так, демонстрационный пример. а баги этого рода могут всплыть в любом месте, т.к. компилятор при оптимизации может на свое усмотрение выбрасывать или переставлять местами целые куски кода. об этом надо помнить.

beastie ★★★★★
()

Возможно, стоит заюзать что-то вроде split? Там количество придирок зашкаливает

amomymous ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.