Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Что это такое - "warning: function declaration isn't a prototype"?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Student Pupkin
Решил попробовал в Keil (ARM) компилятор GCC (codesourcery).
Код
int main()
{
    while(1);
}

При компиляции выдается такое предупреждение - warning: function declaration isn't a prototype.
Объясните, плиз, почему?
MrYuran
A если
int main(void)
?

Почему - не знаю...
mdmitry
Где-то у компилятора есть объявление main() по умолчанию, Вы в своей программе отошли от этого прототипа. Можете сделать свое объявление main.
XVR
С компилятор различает прототипы функций и их декларацию. Прототипом считается декларация функции (в том числе и предварительная) у которой в списке параметров присутствует ХОТЯ БЫ ОДИН параметр.
Т.е. -
Код
void func(); // - Предварительное описание но НЕ прототип
void func(void); // - Предварительное описание И прототип
void func() // - Описание НЕ ЯВЛЯЮЩЕЕСЯ одновременно прототипом
{
  ...
}
void func(void) // - Описание ЯВЛЯЮЩЕЕСЯ одновременно прототипом
{
  ...
}


NB. Для С++ компилятора все немного по другому - он считает ЛЮБОЕ описание прототипом. Функций без прототипа для него вообще не существует
MrYuran
Цитата(MrYuran @ Sep 27 2010, 10:47) *
Почему - не знаю...


Цитата(XVR @ Sep 27 2010, 13:02) *
Код
void func(); // - Предварительное описание но НЕ прототип
void func(void); // - Предварительное описание И прототип
void func() // - Описание НЕ ЯВЛЯЮЩЕЕСЯ одновременно прототипом
{
  ...
}
void func(void) // - Описание ЯВЛЯЮЩЕЕСЯ одновременно прототипом
{
  ...
}

Теперь - знаю!
smile.gif
Student Pupkin
Сенькью вери мач, XVR!!! smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.