Тот же самый случай из зачеркнутого случая здесь. У меня устаревший вызов функции, и он выдает ошибку. Я хочу игнорировать это сейчас. Я могу использовать #undef
, но я предпочитаю использовать флаг компиляции "-Wno-deprecated"
, но по какой-то причине я получаю ту же ошибку.
У меня есть два модуля с обращениями к развращенному фунтоин:
SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash(ssh_session session, unsigned char **hash);
// SSH_DEPRECATED == __attribute__ ((deprecated))
// as can be seen from:
// #define SSH_DEPRECATED __attribute__ ((deprecated))
Модуль A (модуль с ошибками) выводит сообщение об ошибке «отклонен». Я предположил, что причина, по которой я увидел только одну ошибку, заключалась в том, что флаги компиляции A включали -Werror
. Однако оба модуля имеют одинаковый флаг.
Однако модуль B имеет что-то другое. A включает libssh.h
из arm-buidroot-linux-gnueabi
, где B включает это libssh.h
и другую копию libssh.h
(я предполагаю, что 2-я копия является копией -паста старой версии libssh.h
).
Я предположил, что SSH_DEPRECATED
не появляется на 2-м libssh.h
, но я ошибся, так что теперь я не тот, кто мог быть причиной.
В настоящее время я получил его на работу, удалив -Werror
в A , но это плохо, так как:
- Я не знаю, в чем причина (то есть, как это работает в B )
- Мне нужен этот флаг [
-Werror
] (это можно решить, добавив -Wno-deprecated
, а затем вернув -Werror
, но Я не думаю, что это хорошее решение. Больше похоже на взлом)
Мой вопрос: Что в A может вызвать это устаревшее предупреждение, которое не применяется в B ?
Использование powerpc-linux-gnu-g++ (Sourcery G++ Lite 4.3-74) 4.3.2
Примечание: я знаю, что устарело Указывает, что имя или сущность, объявленные с этим атрибутом, устарели, то есть использование разрешено, но по какой-то причине не рекомендуется.