Когда «неопределенный» фатальный или просто предупреждение? - PullRequest
1 голос
/ 25 июля 2010
test.c(6) : warning C4013: 'add' undefined; assuming extern returning int

Я много раз встречался, когда функция undefined сообщала бы error, тем самым останавливая процесс строительства.

Почему на этот раз просто предупреждение?

Ответы [ 3 ]

4 голосов
/ 25 июля 2010

Возможно, вы обычно пишете код на C ++, а это программа на C. C ++ более строг, чем C; он не позволит вам вызывать необъявленные функции.

2 голосов
/ 25 июля 2010

В C ++ попытка вызова функции без действительного объявления в области действия является ошибкой (тогда как C требует, чтобы компилятор принял ее и сделал определенные предположения в таком случае).

Если у вас есть неопределенное внешнее значение на ссылке времени (в отличие от времени компиляции), это также остановит сборку - если компоновщик не сможет найти определение функции, которую вы вызвали (или попытался вызвать, в любом случае), поэтому он не может создать исполняемый файл.

1 голос
/ 25 июля 2010

В зависимости от вашего компилятора вы можете настроить его на обработку предупреждений как ошибок.Хотя это может быть неудобно, часто это хорошо, потому что компилятор знает больше деталей кода, чем вы.

В пакете GNU C -Werror - ваш друг.Предложение недействительно в Тувалу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...