Нечетное VS имя, искажающее поведение?

Рассмотрим следующий бесполезный код, который я компилирую как C ++ на Win10 64-bit:

int test(int argc, char *argv[]);
int main(int argc, char *argv[])
{
   return test(argc, argv);
}

int test(int argc, char **argv)
{
   return 0;
}

Если весь этот код помещен в один и тот же файл .cpp, он правильно компилируется и связывается в VS2012, VS2013, VS2015 и mingw32-g ++ v4.7.1, как и следовало ожидать.

Однако, если я просто перенесу определение тестовой функции в отдельный файл, полученные два файла все еще будут компилироваться и корректно связываться с компилятором mingw, но на всех версиях VS я получаю:

error LNK2019: unresolved external symbol "int __cdecl test(int,char * * const)" (?test@@YAHHQAPAD@Z) referenced in function _main"

Я могу решить эту проблему в VS, просто изменив объявление параметра argv в тестовой функции наchar *argv[], но это не должно быть необходимым, так какchar *argv[] а такжеchar **argv означать то же самое, когда используется для объявления параметра.

Я не пробовал, но меня удивляет, будет ли VS считать две версии разными для перегрузки.

Ответы на вопрос(2)

Ваш ответ на вопрос