Возвращаемое значение для main
должно указать как программа, из которой выходят. Нормальный выход обычно представлен 0 возвращаемыми значениями от main
. Аварийный выход обычно сообщается ненулевым возвратом, но нет никакого стандарта для того, как интерпретируются ненулевые коды. Также, как отмечено другими, void main()
явно запрещается стандартом C++ и не должен использоваться. Допустимый C++ main
подписи:
int main()
и
int main(int argc, char* argv[])
, который эквивалентен [1 113]
int main(int argc, char** argv)
, также стоит отметить, что в C++, int main()
может быть оставлен без оператора возврата, в которой точке это принимает значение по умолчанию к возврату 0. Это также верно с программой C99. Должен ли return 0;
быть опущен или не открыт для дебатов. Диапазон действительной программы C основные подписи намного больше.
кроме того, эффективность не является проблемой с эти main
функция. Это может только быть введено и оставлено однажды (маркировка запуска и завершения программы) согласно стандарту C++. Для C случай отличается, и повторно вводящий main()
позволяется, но должен избежаться.
Это хорошая идея?
Нет, если вы когда-нибудь собирались компилировать код с что-то кроме gcc. Вызывает ли pthreads какие-то особые проблемы?
Если вы уже используете pthread, а функции блокировки pthread уже делают то, что вы хотите, лучше всего использовать функции блокировки pthread.
Эти встроенные атомарные встроенные функции являются просто строительными блоками для примитивов более высокого уровня; написание этих примитивов более высокого уровня, как правило, непросто, и любые ошибки могут вызвать ошибки, на выявление которых может уйти много времени (поскольку они обычно зависят от времени). Если у вас уже есть библиотека с примитивами более высокого уровня, которые делают то, что вы хотите, и достаточно быстрые для ваших нужд (и не предполагайте, что они слишком медленные только потому, что вам нужно выполнить вызов функции), лучше не изобретать заново колесо.
Нет. Встроенные модули GCC, вероятно, имеют смысл для тех, кто пишет операционные системы, libc и, возможно, сам pthreads, но для вашего обычного приложения нет причин не использовать подход pthreads.
И даже если вы всегда используете GCC , когда-нибудь вы можете захотеть запустить инструмент статического анализа, который не будет обрабатывать все клиентские расширения GCC.