Будучи низкоуровневым программистом, я часто работаю с кодом запуска модуля для исполняемых файлов, поэтому я хорошо понимаю, как работает код типа crt0. При написании кода на С++ я обычно объявлял main
как extern "C"
, чтобы соответствовать тому, что должен сделать код запуска C, чтобы вызвать main
. Обычно я использую это объявление для main
(и wmain
, если оно специально предназначено для Windows):
extern "C" int main(int argv, const char *const *argv)
extern "C" int __cdecl wmain(int argv, const wchar_t *const *argv)
Можно ли использовать extern "C"
на main
? Кроме того, const char *const *
является законным для типа argv, а не char *[]
?