Оказывается, это просто жестко запрограммировано, и нет способов отключить это.
Из источника gcc :
3328 warned = warning_at
3329 (&richloc, OPT_Wimplicit_function_declaration,
3330 G_("implicit declaration of function %qE; did you mean %qs?"),
3331 id, suggestion);
[И нет, ни lookup_name_fuzzy()
, ни hint.suggestion ()
не будут принимать во внимание ни один параметр командной строки при возврате своих результатов]
Фильтрация вывода ошибок с помощью некоторого колдовства оболочки, например. с
{ gcc ... 2>&1 >&3 | sed 's/; did you mean [^?]*[?]//' >&2; } 3>&1
на самом деле не является решением, во-первых, потому что его нельзя использовать в make-файлах (состояние ошибки командной строки будет равно sed
или какому-либо фильтру, а не gcc),и во-вторых, потому что это все равно будет содержать такие вещи, как:
void foo(char *b, size_t z){ readlink("/foo", b, z); }
^~~~~~~~
realloc
, для фильтрации которого потребуется сложная логика.
[использование bash / kshisms, как 2> >(...)
, не поможетлибо 1-й пункт, потому что make
будет использовать /bin/sh
, а не оболочку пользователя]