В стандарте явно указано, что main
имеет две действительные (то есть гарантированные для работы) подписи; а именно:
int main();
int main(int, char*[]);
Мой вопрос прост, может ли что-то вроде следующего быть законным?
int main(const unsigned int, const char* const* argv);
Мои тесты говорят "да", но я не уверен в ответе, потому что не перегружаю main
, меняя int
на unsigned int
, а также не верхний уровень const
-ness argv? Если я, то это явно запрещено.
Итак, гарантируют ли эти модификации работу над совместимым стандартом компилятором?