Используя gcc
5.2.0, я заметил, что этот код не выдает предупреждение:
#include <stddef.h>
int function(void)
{
return NULL;
}
void procedure(void)
{
return NULL;
}
Я использовал флаги -Wall -Wextra -std=c99 -pedantic
и использую archlinux. Я не уверен, почему этот код отлично работает на gcc
, тем более что clang
3.7.0 выдает предупреждение.
Я также пытался использовать более старые версии gcc
, такие как 4.9 или 4.7, и обе они генерировали предупреждения.
Предупреждения:
warning: return makes integer from pointer without a cast
и
warning: ‘return’ with a value, in function returning void
Я должен упомянуть, что я пытался скомпилировать gcc 5.2 на Debian, и результат тот же. Так что проблема не в archlinux.
В чем причина? Кажется, я не могу найти ничего, связанного с этим, где-либо еще.
Благодарю вас!
-Wconversion
. - person   schedule 23.09.2015-Wconversion
ничего не изменил. - person damwdan   schedule 23.09.2015-Wsystem-headers
исправляет это, компилятор использует неправильное место для диагностики (тот, что из определения макроса). Пожалуйста, отправьте отчет об ошибке в bugzilla gcc. - person Marc Glisse   schedule 23.09.2015