Две 'основных' функции в C/C++

Я могу записать программу в C или в C++ с двумя основными функциями?

20
задан nicael 21 May 2014 в 18:47
поделиться

12 ответов

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

4
ответ дан 29 November 2019 в 22:40
поделиться

Нет, программа может иметь только 1 точку входа (это main()). На самом деле, в общем случае, в C.

можно иметь только одну функцию с заданным именем.
6
ответ дан 29 November 2019 в 22:40
поделиться

No, main() определяет точку входа в вашу программу, и в вашей программе должна быть только одна main() функция(точка входа).

Честно говоря, ваш вопрос для меня не имеет особого смысла.

.
4
ответ дан 29 November 2019 в 22:40
поделиться

Вы можете иметь две функции с именем main . Имя ни в коем случае не является специальным и не зарезервировано. Особенностью является функция , и она случайно имеет такое имя. Функция глобальная. Поэтому если вы напишете главную функцию в каком-то другом пространстве имён, то у вас будет вторая main функция.

namespace kuppusamy {
  int main() { return 0; } 
}

int main() { kuppusamy::main(); }

Первая функция main не особенная - обратите внимание, что вы должны явно возвращать .

17
ответ дан 29 November 2019 в 22:40
поделиться

Нет. Все программы имеют одну main(), так компилятор и компоновщик компоновки генерируют исполняемый файл, который начинается где-то разумно.

В принципе, у вас есть два варианта:

  1. Пусть main() интерпретирует некоторые аргументы командной строки, чтобы решить, какое именно main вызывать в действительности. Недостатком является то, что у вас будет исполняемый файл с обеими программами.

  2. Создайте библиотеку из разделяемого кода и скомпилируйте каждый главный файл с этой библиотекой. В итоге у тебя будет два исполняемых файла.

29
ответ дан 29 November 2019 в 22:40
поделиться

Идиомой является отправка на значение argv[0]. С жесткими ссылками (POSIX) вы даже не теряете дисковое пространство.

.
0
ответ дан 29 November 2019 в 22:40
поделиться

Вы можете его записать, и он скомпилируется, но он не будет компоноваться (если только ваш компоновщик не будет компоновщиком)

.
0
ответ дан 29 November 2019 в 22:40
поделиться

Нет, функция main() является точкой входа в вашу программу, так как у вас не может быть двух точек входа, у вас не может быть двух функций main().

.
0
ответ дан 29 November 2019 в 22:40
поделиться

В какой-то совершенно особенной архитектуре, можно. Это относится к ячеечному процессору Cell Processor, где есть главная программа для главного процессора (64-битный элемент PowerPC Processors Element, называемый PPE) и одна или несколько главных программ для 8 различных сопроцессоров (32-битный элемент Synergistic Processing Element, называемый SPE).

.
2
ответ дан 29 November 2019 в 22:40
поделиться

Что вы имеете в виду под "главной функцией"? Если Вы имеете в виду первую функцию, которая выполняется при запуске программы, то Вы можете иметь только одну. (Сначала Вы можете иметь только одну!)

Если Вы хотите, чтобы Ваше приложение выполняло разные задачи при запуске, Вы можете написать главную функцию, которая читает командную строку (например), а затем решает, какую другую функцию вызывать.

2
ответ дан 29 November 2019 в 22:40
поделиться

Нет, в языке Си нельзя иметь более одной функции main(). В стандартном языке Си функция main() является специальной функцией, которая определяется как точка входа в программу. Не может быть более одного экземпляра ЛЮБОЙ функции, которую вы создаете на языке Си или на любом другом языке, если только вы не указываете различные подписи. Но в случае с функцией main(), я думаю, у вас нет выбора ;)

.
1
ответ дан 29 November 2019 в 22:40
поделиться

Да ; Тем не менее, это специфичная платформа вместо стандарта C, и если вы спрашиваете о том, что вы действительно хотите достичь (вместо этого попытка решения этой проблемы), то вы, вероятно, получите ответы, которые более полезны для ты.

12
ответ дан 29 November 2019 в 22:40
поделиться