Нечетное 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 считать две версии разными для перегрузки.