реклама на сайте
подробности

 
 
> Что это такое - "warning: function declaration isn't a prototype"?
Student Pupkin
сообщение Sep 26 2010, 20:51
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Решил попробовал в Keil (ARM) компилятор GCC (codesourcery).
Код
int main()
{
    while(1);
}

При компиляции выдается такое предупреждение - warning: function declaration isn't a prototype.
Объясните, плиз, почему?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
MrYuran
сообщение Sep 27 2010, 06:47
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



A если
int main(void)
?

Почему - не знаю...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Sep 27 2010, 08:23
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Где-то у компилятора есть объявление main() по умолчанию, Вы в своей программе отошли от этого прототипа. Можете сделать свое объявление main.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 27 2010, 09:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



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


NB. Для С++ компилятора все немного по другому - он считает ЛЮБОЕ описание прототипом. Функций без прототипа для него вообще не существует
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 27 2010, 09:11
Сообщение #5


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(MrYuran @ Sep 27 2010, 10:47) *
Почему - не знаю...


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

Теперь - знаю!
smile.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Sep 27 2010, 18:19
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Сенькью вери мач, XVR!!! smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016