Подтвердить что ты не робот

Две "основные" функции в C/С++

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

4b9b3361

Ответ 1

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

В основном у вас есть два варианта:

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

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

Ответ 2

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

Ответ 3

У вас могут быть две функции, называемые main. Название не является каким-либо особым, и оно не зарезервировано. Какая особенность - это функция, и это имеет такое имя. Функция глобальна. Поэтому, если вы напишете основную функцию в другом пространстве имен, у вас будет вторая функция main.

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

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

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

Ответ 4

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

Ответ 10

Нет. Основная() - это точка входа в вашу программу, так как у вас не может быть двух точек входа, у которых нет двух основных().

Ответ 11

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

Ответ 12

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

Ответ 13

Это может быть ответ на ваш запрос

void main()
{
    func1();
}
#define main func1
void main()
{
    printf("inside 2nd main");
}

Ответ 14

Не в C, С++

но теперь С#.net вводит трюк, вы можете использовать 2 сети в одном приложении. я также реализовал в своем приложении. У меня есть сценарий и требования и успешно реализован.

ссылка и доказательство здесь https://www.youtube.com/watch?v=KJcBj3hLIpM

Ответ 15

Да, несколько main() разрешены, но не в глобальном пространстве имен.

"Каждая программа на С++ должна иметь ровно одну глобальную функцию с именем main()" - Bjarne stroustrup.

Например, 1:

namespace foo
{
  int main() //Main 1 
  {
    return 1;
  }
}

int main() // Main 2   
{

}

// Main 1 : namespace is foo

// Main 2 : namespace is global

// Allowed : Yes , its allowed as both the main() are present in different namespaces.

Например, 2:

int main() //Main 1 
{
    return 1;
}

void main() // Main 2   
{

}

// Main 1 : namespace is global

// Main 2 : namespace is global

// Allowed : No , as multiple main() in global namespace . Compile-time error is thrown : redefinition of main() ..