Нет, это не правильно.
Main - это специальная функция, и к ней предъявляются строгие требования (даже более строгие, чем к обычной функции), но вы также путаете между тем, что является функцией, и тем, что является указателем на функцию.
Логическая проблема заключается в том, что существует разница между функцией и переменной, содержащей указатель на функцию (то, что вы хотите, чтобы main был).
Функция имеет фиксированный адрес в памяти, поэтому для вызова функции этот адрес просто вызывается. Указатель на функцию указывает на адрес в памяти, поэтому для вызова функции сначала необходимо прочитать, на что указывает указатель, а затем вызвать этот адрес.
Указатель на функцию имеет уровень косвенности, отличный от функции.
Синтаксис тот же ... то есть, если x
- указатель на функцию, которую вы можете написать x(42)
, но сгенерированный машинный код все же отличается, если x
- это вместо функции (в случае указатель на значение, которое необходимо найти, и адрес вызова определяется во время выполнения, с функцией адрес фиксируется - вплоть до перемещения - и определяется во время соединения).