Вот почему я обычно советую людям скомпилировать свой код с помощью:
cc -Wmissing-variable-declarations -Wstrict-variable-declarations -Wold-style-definition
Эти флаги обеспечивают выполнение нескольких действий:
- -Wmissing-variable-declarations : Невозможно объявить нестационарную функцию, не получив сначала прототип. Это делает более вероятным, что прототип в файле заголовка совпадает с фактическим определением. В качестве альтернативы, он предусматривает, что вы добавляете ключевое слово static в функции, которые не должны быть видимыми публично.
- -Wstrict-variable-declarations: прототип должен правильно перечислять аргументы.
- -Wold-style-definition: само определение функции также должно правильно перечислять аргументы.
Эти флаги также используются по умолчанию во многих проектах с открытым исходным кодом. Например, во FreeBSD эти флаги включаются при создании с WARNS = 6 в Makefile.
задан Gary 8 March 2019 в 10:57
поделиться