В современном C и современном C ++:
main
всегда либо int main()
, либо int main(int, char*[])
.
- В C89 вы должны явно
return
из основного.
- В C99 и C ++, если вы не возвращаете явно, вы неявно
return 0
.
[ (Сейчас я проверил стандарт C99 и отредактировал этот параграф.) ] Для вашего второго вопроса, в C99 у вас должна быть точно одна из двух main
функций. В C ++ стандарт говорит, что программа хорошо сформирована, если она имеет функцию main
, которая возвращает int
, и что каждая соответствующая реализация должна принять две перечисленные версии в качестве точки входа (для «размещенной программы», например не для ядра Linux); см. 3.6.1. [/ edit] Насколько мне известно, соглашения о вызовах также не являются частью стандарта.
Я не понимаю вашего вопроса о памяти, но учтите, что ни в C99, ни в C ++ 03 нет ничего, кроме элементарной модели памяти, тогда как новый C ++ 0x явно добавляет модель памяти, чтобы обеспечить определены параллельные и атомарные операции.