Перейти к содержанию
    

Начало Си-программы

Встречается void main (void) и int main (void). Последний вариант, говорят, по ANSI. В чем разница, если компилируется одинаково (имеется в виду именно микроконтроллерный, а не компьютерный Си)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Встречается void main (void) и int main (void). Последний вариант, говорят, по ANSI. В чем разница, если компилируется одинаково (имеется в виду именно микроконтроллерный, а не компьютерный Си)?

int main() - обязан быть по Стандарту. Остальные варианты на усмотрение реализации. В контексте МК, на котором выполняется одна программа, никакой разницы нет. Обычно компиляторы выдают предупреждение на void main(). Это предупреждение можно подавить соответствующими ключами компилятора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Встречается void main (void) и int main (void). Последний вариант, говорят, по ANSI. В чем разница, если компилируется одинаково (имеется в виду именно микроконтроллерный, а не компьютерный Си)?

При "int main..." подразумевается что когда программа отработает она вернёт некий код, обычно это код ошибки или 0 если ошибки нету. В микроконтроллерах "int main" выглядит глупо. т.к. подразумевается что программа в МК никогда не завершит свою работу. =) По идеологии Си программа это процедура, вызываемая ОС, поэтому она может как получить некие параметры, так и вернуть некоторые данные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В стандарте ANSI int - целочисленный тип, void - не типизированный, то есть может принимать любое значение. Которое в дальнейшем можно привести к любому типу int, char, unsigned int, unsigned char. Основное тело программы на Си Функция main, как любая функция может возвращать, может не возвращать значения. Но всё же рекомендуется использовать int main() так как в дальне вы можете захотеть переписать программу, например для работы в среде ОС и там она будет возвращать значение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

рекомендуется использовать int main() так как в дальне вы можете захотеть переписать программу, например для работы в среде ОС и там она будет возвращать значение.

Спасибо за ответы, но попутно возник вопрос - что подразумевается под ОС? Некая абстрактная микроконтроллерная ОС (какая именно, как функционирует, существует ли вообще) или ОС многопроцессорной системы или ОС компьютерная?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

рекомендуется использовать int main() так как в дальне вы можете захотеть переписать программу, например для работы в среде ОС и там она будет возвращать значение.

Спасибо за ответы, но попутно возник вопрос - что подразумевается под ОС? Некая абстрактная микроконтроллерная ОС (какая именно, как функционирует, существует ли вообще) или ОС многопроцессорной системы или ОС компьютерная?

попробую разжевать.

Считается что СИ язык "переносимый", т.е. программу с одной платформы можно перенести без особых проблемм на другую. Например написал ты програмку под AVR (разумеется там нет никакой ОС) на Си, а потом решил перенести её на более мощный ARM, в котором уже может существовать ОС, и ты без проблемм это сделаешь, если следовал стандартам и рекомендациям. Чего тут можно не понять? B)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...