Компилятор Visual Studio по умолчанию использует std - PullRequest
0 голосов
/ 06 октября 2018
#include <iostream>
int main() {
    std::cout << abs(-5.3) << "\n";
}

При компиляции с g ++ он печатает 5, что я получаю - перегруженный abs лежит в std, и я не использовал его.

Но если я использую компилятор Visual Studio (19.14.26433), результат равен 5.3.

Если я добавлю std, у VS нет вопросов, g ++ требует cmath.

То же самое относится и к system: system("foo"), например.Нет проблем с компилятором VS, но g ++ снова требует std.

И это не подразумевается using namespace std в VS, так как другие функции (например, cout) не будут компилироваться без std.

Итак, есть ли какие-то специальные функции, которые компилятор VS включает в std по умолчанию?Список их где-нибудь есть?Или здесь что-то еще происходит?

1 Ответ

0 голосов
/ 09 ноября 2018

Похоже, я нашел половину вопроса, Игорь Тандетник был прав.

math.h и cmath реализованы по-разному в Visual C ++, первый имеет int abs(int), второй перегружал его для других типов.Стандарт не требуется.iostream включает в себя cmath.о боже мой ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...