GCC услужливо предупредит вас, если вы забыли включить часовой NULL в конце вызова одной из функций: exec(3)Отсутствует «отсутствуют сторожевое» предупреждение для Exec в C++ 11
#include <unistd.h>
int main(int argc, char **argv)
{
execlp("test", "test", "arg1");
}
Sample выход для компилятора GCC 4.8:
$ g++ test.cc -Wformat
test.cc: In function ‘int main(int, char**)’:
test.cc:4:32: warning: missing sentinel in function call [-Wformat=]
execlp("test", "test", "arg1");
^
$
Однако, если вы собираете в C++ 11 режима, нет диагностики не печатается:
$ g++ test.cc -std=c++11 -Wformat
$
Почему это предупреждение недоступно в C++ 11? Есть ли способ вернуть его?
То же самое происходит с '-std = C++ 98'. – trojanfoe
Вам нужно что-то вроде '-std = gnuXX' (по умолчанию 98). –
Действительно, '-std = gnu11' возвращает предупреждения. – trojanfoe