В моем коде под GCC я получаю довольно много предупреждений об этих двух типах.Ингибирование несовместимого указателя типа конкретного предупреждения в GCC
warning: passing argument 1 of 'foo' from incompatible pointer type
и
warning: assignment from incompatible pointer type
Я знаю, что обычно эти две серьезные предупреждения, указывающие на то, на самом деле не так в коде. В моем случае, где бы они ни происходили, я очень хорошо знаю, что я делаю, и я знаю, что могу смело игнорировать эти предупреждения. (И да, я в этом уверен)
Но теперь мой код вырос до такой степени, что эти предупреждения затмевают что-либо еще, в сущности скрывая потенциальные предупреждения, которые могут привести меня к неприятной ошибке. Поэтому я решил помешать им. Вскоре я понял, что не знаю, как это сделать. Моя версия gcc 4.4.1, и я знаю, что могу использовать:
#pragma GCC diagnostic ignore "-Wname"
игнорировать любое предупреждение, которое я хочу. Но из единственного big and comprehensive list предупреждений GCC, которые я нашел, я не могу найти, какие из них есть. Я пришел к тому, чтобы собрать их один за другим и превратить их в ошибки, чтобы увидеть, когда компиляция остановится из-за несовместимого типа указателя, но безрезультатно, как показано ниже.
#pragma GCC diagnostic error "-Wimplicit-int"
#pragma GCC diagnostic error "-Waddress"
#pragma GCC diagnostic error "-Wreturn-type"
.... //e.t.c.
Итак, вопрос в том, знает ли кто-нибудь имя этих предупреждений, чтобы я мог фактически их заблокировать?
EDIT
В связи с обсуждением в комментариях я должен прояснить неправильное представление, что у меня было что привело меня к мысли, что я должен был подавлять предупреждения. Я думал, что есть какая-то стоимость (независимо от того, насколько минимальна) участие в выполнении явных бросков между указателями на структуры.
Итак, мое мышление, которое я теперь понял, было ошибочным, было то, что, поскольку моя программа работает и долгое время работала на разных платформах, зачем добавлять работу, чтобы просто удовлетворить компилятор?
Ну, теперь я понял, и я пишу это здесь, если кто-то еще спотыкается над этой темой и имеет ту же линию мышления. Там нет расходов, связанных с выполнением явного типажей указателей и преимущества:
- Компилятор останавливается нытье вас с предупреждениями
- Другие люди могут знать, что вы сделали бросок намеренно там и не делал ошибок
Так что это для всех, у кого может быть тот же вопрос.
Всегда помните о предупреждениях - они есть по какой-то причине. Это очень хорошая идея для компиляции с флагом '-Wall', а затем для фиксации предупреждений. –
Из любопытства и никоим образом не ставя под сомнение ваш гений, могу ли я спросить, что этот код вызывает предупреждение? –
@EdHeal Я согласен с тобой, и поэтому я хочу отключить эти два, потому что в моем коде они меня не помогают, вместо этого они затмевают другие предупреждения, которые могут быть полезны. Мне нужно исправить компилятор, препятствующий моей работе, а не помогая мне в этом. У меня есть причины для игнорирования этих конкретных предупреждений. Вопрос в том, как это сделать, чтобы я мог сосредоточиться на «реальных» предупреждениях. – Lefteris