Implicit declaration of function abs
мой компилятор (GCC) дает мне предупреждение:
предупреждение: неявное объявление функции
пожалуйста, помогите мне понять, почему это происходит.
6 ответов:
вы используете функцию, для которой компилятор не видит объявление ("прототип") еще.
вы должны объявить свою функцию перед main, как это, либо непосредственно, либо в заголовке:
правильный способ-объявить прототип функции в заголовке.
главная.h
главная.c
альтернатива с одним файлом (main.в)
когда вы делаете ваш #включает в себя в основном.c, поместите ссылку #include на файл, содержащий указанную функцию, в верхней части списка include. например, скажите, что это главное.c и ваша ссылочная функция находится в " SSD1306_LCD.h"
выше не будет генерировать ошибку" неявное объявление функции", но ниже будет —
точно такой же список #include, только в другом порядке.
Ну, это сделал для меня.
если у вас есть правильные заголовки определены и используют не GlibC библиотеки (например,Musl C) gcc кроме того, error: implicit declaration of function когда расширения GNU, такие как malloc_trim встречаются.
когда вы error: implicit declaration of function Он также должен перечислить оскорбительную функцию. Часто эта ошибка происходит из-за забытого или отсутствующего файла заголовка, поэтому в командной строке вы можете ввести man 2 functionname и посмотрите на SYNOPSIS раздел вверху, так как в этом разделе будут перечислены все заголовочные файлы, которые необходимо включить. Или попробуйте http://linux.die.net/man/ это онлайн-страницы руководства, на которые они гиперссылки и легко искать. Функции часто определяются в заголовочных файлах, включая любые необходимые заголовочные файлы часто являются ответом. Как сказал кникутар,
вы используете функцию, для которой компилятор не видел декларации ("прототипа") пока нет.
Я думаю, что вопрос не на 100% ответил. Я искал проблему с отсутствующим typeof (), который является директивой времени компиляции.
следующие ссылки прольют свет на ситуацию:
В заключение попробуйте использовать . Также gcc . -Dtypeof=__typeof__ . can помощь.
Компиляция следующего кода с помощью GCC-5.1.0 выдает предупреждение:
Я составил один и тот же код с GCC-4.9.2 и это не производит никакого предупреждения.
abs() Функция объявлена в которой вы не включены.
GCC 4.9.2 не жаловался , потому что режим компиляции по умолчанию был C89 / C90 ( -std=gnu89 ) и функция не должен быть объявлена перед использованием в C89 до тех пор , как они возвращаются int , но режим компиляции по умолчанию был изменен на С11 ( -stdd=gnu11 ) в GCC 5.1.0 (см примечания к выпуску ) и C11 функции должны быть объявлены (или определены) , прежде чем они используются.
I used the abs() function and I added #include at the top of code. But I keep getting this error:
I’m using LLVM compiler.
Why does this error occurs even though I have included math.h ?
1 Answer 1
As a rule of thumb the mathematical functions that operate on floating point numbers are in math.h, and the ones that operate on integers are in stdlib.h.
There’s a pretty good Wikipedia article on C mathematical functions if you need more information.
Not the answer you’re looking for? Browse other questions tagged c math.h absolute-value or ask your own question.
Linked
Related
Hot Network Questions
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.1.13.35763